스도쿠의 첫 실수

시간 제한2초메모리 제한128 MB

요약
81번의 스도쿠 착수 순서가 주어질 때, 완성 불가능한 상태가 되는 첫 번째 단계를 찾는 문제입니다.
난이도

보통10점 중 7점

유형
백트래킹, 시뮬레이션, 행렬
정답자
아직 제출이 없습니다

문제

스도쿠는 9행 9열, 모두 81개의 칸으로 이루어진 퍼즐이다. 왼쪽 위 칸은 (1, 1), 오른쪽 아래 칸은 (9, 9)로 나타낸다.

수를 채우는 규칙은 다음과 같다.

  1. 각 행과 각 열에는 1부터 9까지의 숫자가 정확히 한 번씩 나타나야 한다.
  2. 굵은 선으로 나뉜 각 3×3 정사각형에도 1부터 9까지의 숫자가 정확히 한 번씩 나타나야 한다.

다음 상황에서는 1을 제외한 2부터 9까지의 숫자가 이미 같은 행, 열, 또는 3×3 정사각형에 있으므로 빈칸에는 1만 들어갈 수 있다.

또 다른 3×3 정사각형에서는 3을 제외한 나머지 숫자가 이미 있으므로 가운데 빈칸에는 3만 들어갈 수 있다.

이처럼 칸을 차례대로 채우면 조건을 만족하는 스도쿠를 완성할 수 있다. 하지만 중간에 잘못된 수를 넣으면, 그 순간에는 행·열·3×3 정사각형 규칙과 직접 충돌하지 않더라도 남은 칸을 끝까지 채울 수 없게 될 수 있다.

아래와 같이 29개의 칸이 채워진 상태를 보자.

여기서 30번째로 (4, 6)에 5를 넣으면 현재 단계에서는 겉으로 규칙을 어기지 않지만, 남은 51개의 칸을 어떤 방법으로 채워도 퍼즐을 완성할 수 없다.

주어진 81번의 입력 순서에서, 각 단계까지의 배치가 완성 가능한 스도쿠 판으로 확장될 수 있는지 판단하여 가장 먼저 완성이 불가능해지는 단계 번호를 구하시오.

입력

81개의 줄이 주어진다. 각 줄에는 해당 단계에서 숫자를 놓을 칸의 행 번호, 열 번호, 그리고 놓을 숫자가 공백으로 구분되어 주어진다. 모든 값은 1 이상 9 이하의 정수이다.

출력

가장 먼저 완성이 불가능해지는 단계 번호를 출력한다. 모든 단계를 지나도 실수가 없다면 -1을 출력한다.

예제2

  1. 예제 1

    입력
    1 1 5
    1 3 3
    1 4 7
    1 7 1
    2 3 2
    2 4 8
    2 5 6
    3 2 6
    3 8 2
    3 9 5
    7 1 9
    7 2 4
    7 8 5
    8 1 7
    8 5 9
    8 6 6
    8 7 4
    9 3 1
    9 6 4
    9 7 9
    4 3 9
    4 8 1
    4 9 3
    6 2 1
    6 4 3
    6 5 2
    6 7 7
    6 8 9
    6 9 4
    4 6 5
    1 2 8
    2 1 1
    2 2 9
    3 1 4
    3 3 7
    7 3 6
    8 2 5
    8 3 8
    9 1 2
    9 2 3
    1 8 6
    1 9 9
    2 7 3
    2 8 4
    2 9 7
    3 7 8
    7 7 2
    7 9 8
    8 8 3
    8 9 1
    9 8 7
    9 9 6
    5 1 3
    5 2 7
    5 3 4
    6 1 6
    6 3 5
    5 7 5
    5 8 8
    5 9 2
    3 4 9
    4 4 4
    5 4 6
    7 4 1
    8 4 2
    9 4 5
    4 1 8
    4 2 2
    4 7 6
    1 5 4
    1 6 2
    3 5 3
    3 6 1
    5 5 1
    5 6 9
    6 6 8
    7 6 3
    9 5 8
    4 5 7
    2 6 7
    7 5 5
    
    예상 출력
    30
    
  2. 예제 2

    입력
    1 1 5
    1 3 3
    1 4 7
    1 7 1
    2 3 2
    2 4 8
    2 5 6
    3 2 6
    3 8 2
    3 9 5
    7 1 9
    7 2 4
    7 8 5
    8 1 7
    8 5 9
    8 6 6
    8 7 4
    9 3 1
    9 6 4
    9 7 9
    4 3 9
    4 8 1
    4 9 3
    6 2 1
    6 4 3
    6 5 2
    6 7 7
    6 8 9
    6 9 4
    4 6 7
    1 2 8
    2 1 1
    2 2 9
    3 1 4
    3 3 7
    7 3 6
    8 2 5
    8 3 8
    9 1 2
    9 2 3
    1 8 6
    1 9 9
    2 7 3
    2 8 4
    2 9 7
    3 7 8
    7 7 2
    7 9 8
    8 8 3
    8 9 1
    9 8 7
    9 9 6
    5 1 3
    5 2 7
    5 3 4
    6 1 6
    6 3 5
    5 7 5
    5 8 8
    5 9 2
    3 4 9
    4 4 4
    5 4 6
    7 4 1
    8 4 2
    9 4 5
    4 1 8
    4 2 2
    4 7 6
    1 5 4
    1 6 2
    3 5 3
    3 6 1
    5 5 1
    5 6 9
    6 6 8
    7 6 3
    9 5 8
    4 5 5
    2 6 5
    7 5 7
    
    예상 출력
    -1