조컴공은 알고리즘 중간고사가 끝난 기념으로 간단한 게임을 하려고 한다.
이 게임은 \(3 \times 3\)의 격자로 이루어지고, 각 칸은 흰색 또는 검은색이다.
컴공이가 어떤 칸을 선택하면 그 칸의 색이 반전되며, 그와 동시에 선분을 공유하는 인접한 칸들 또한 색이 반전된다.
예를 들어 \((1, 2)\)를 선택하면 \((1, 1), (1, 2), (1, 3), (2, 2)\)의 색이 반전된다.
이것을 여러 번 시도하고, 진행 도중에 모든 칸의 색이 동일해지면 게임이 즉시 종료된다.
컴공이는 중간고사로 인해 머리가 지끈지끈하기 때문에 아무렇게나 칸을 눌러서 게임이 클리어되기만을 바라고 있다.
몇 번의 시도 만에 게임이 종료될까?
입력
- 첫 번째 줄부터 세 번째 줄까지 격자의 초기 상태가 주어진다. 0은 흰색이며, 1은 검은색이다.
- 그 다음 줄에 시도한 횟수 N이 주어진다.\((1 ≤ N ≤ 10000)\)
- 그 다음 줄부터 \(N\)개의 줄에 컴공이가 선택한 행 번호 \(r\)과 열 번호 \(c\)가 주어진다. 번호는 1부터 3까지 매겨져 있다.
출력
- 몇 번의 시도에 게임이 종료되는지 출력하고, 만약 모든 시도가 끝나도 게임이 종료되지 않는다면 -1을 출력한다.
입력 예시 1
1 0 0
0 1 1
1 0 0
3
2 2
2 3
3 1
출력 예시 1
2
입력 예시 2
1 0 0
0 1 1
1 0 0
3
2 2
3 1
2 3
출력 예시 2
-1
Comments
TS 건의
모든 색이 같은 입력에 대한 TS가 존재하지 않습니다.
따라서 TS가 추가되어야 합니다.
Good Comment!!, 감사합니다.
아래와 같이 코드를 직접적으로 올리는 것은 금지합니다. 이 기능은 문제에 대한 힌트, 코딩 방법에 대한 질문과 응답을 위한 기능입니다. 저를 포함한 여러분들이 질문자이면서 답변자가 될 수 있습니다. 그러나, 문제에 대한 working code를 직접 포스팅 한 경우, 그 포스팅한 사람에게 페널티를 부과하겠습니다. 여러분들의 주의를 부탁드립니다. 강문수 드림.
import java.util.Scanner; class Change { static int SuccessTime; static int howmany[]=new int[1000]; static int t=0; static void ColorChange(int[][] a,int x,int y){ if(x>=0 && y>=0 &&y<a.length && x<a.length && a[x][y]==0) a[x][y]=1;
}
static void ChangeSide(int[][] a,int x,int y) { ColorChange(a,x,y); ColorChange(a,x-1,y); ColorChange(a,x+1,y); ColorChange(a,x,y-1); ColorChange(a,x,y+1); }
static void IsAllOne(int[][] a,int Times) {// 색이 전부 같다면 그 시간을 SuccessTime 에 저장 if(a[0][0]==1 && a[0][1]==1 && a[0][2]==1 && a[1][0]==1 && a[1][1]==1 && a[1][2]==1 &&a[2][0]==1 && a[2][1]==1 && a[2][2]==1) { howmany[t++]=Times; } if(a[0][0]==0 && a[0][1]==0 && a[0][2]==0 && a[1][0]==0 && a[1][1]==0 && a[1][2]==0 &&a[2][0]==0 && a[2][1]==0 && a[2][2]==0) { howmany[t++]=Times; } SuccessTime=howmany[0]; } static void PrintSuc() { if(SuccessTime>0) System.out.println(SuccessTime); else System.out.println(-1); }
}
public class Color {
public static void main(String[] args) { Scanner sc =new Scanner(System.in); int tries; int[][] grid=new int[3][3]; for(int j=0; j<3; j++) for(int i=0; i<3; i++) grid[j][i]=sc.nextInt();
}
}