Computer/Algorithm

Daily Algorithm - 바둑알 십자 뒤집기

kentakang 2018. 3. 23. 20:27
반응형

문제

아버지를 기다리던 경곽이는 검정/흰 색 바둑알을 바둑판에 꽉 채워 깔아 놓고 놀다가...
"음... 이거... 십(+)자 뒤집기를 해볼까?"하고 생각하였다.
바둑판(19×19)에 흰돌(1)/검정돌(0) 모두 꽉 채워놓여있을 때,
개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자.

입력

바둑알이 깔려 있는 상황19×19 로 입력된다.
십자바꾸기 횟수()가 입력된다.
십자바꾸기 좌표가 횟수() 만큼 입력된다. 
단, 은 

이하의 자연수이다.)

출력

십자 바꾸기 결과를 출력한다.

예제 입력

0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 2 10 10 12 12

예제 출력

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

풀이

import java.util.Scanner;

public class codeup1097 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int[][] arr = new int[19][19];

for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++)
arr[i][j] = s.nextInt();
}

int n = s.nextInt();

for (int i = 0; i < n; i++) {
int a = s.nextInt();
int b = s.nextInt();

for (int j = 0; j < 19; j++) {
if (arr[a - 1][j] == 0)
arr[a - 1][j] = 1;
else
arr[a - 1][j] = 0;
}

for (int j = 0; j < 19; j++) {
if (arr[j][a - 1] == 0)
arr[j][a - 1] = 1;
else
arr[j][a - 1] = 0;
}
}

for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++)
System.out.print(arr[i][j] + " ");
System.out.print("\n");
}
}
}


문제 출처 : https://www.acmicpc.net/problem/2420



반응형