크로스 해칭으로 스도쿠 풀기

면접 대비

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

요약
주어진 스도쿠 판에서 크로스해칭 기법만 반복 적용해 채울 수 있는 칸을 모두 채우고, 규칙 위반이나 모순이 있으면 ERROR를 출력합니다.
난이도

보통10점 중 4점

유형
시뮬레이션, 행렬, 구현
정답자
아직 제출이 없습니다

문제

스도쿠는 가로 9칸, 세로 9칸으로 이루어진 표에 1부터 9까지의 숫자를 채우는 퍼즐이다. 각 행과 열, 그리고 각 3x3 작은 격자에는 1부터 9까지의 숫자가 한 번씩만 들어가야 한다.

이 문제에서는 여러 풀이 방법 중 크로스 해칭만 사용할 수 있다. 크로스 해칭은 숫자 하나를 고른 뒤, 그 숫자가 이미 들어 있는 행, 열, 3x3 격자를 제외하는 방법이다. 어떤 3x3 격자에서 그 숫자를 놓을 수 있는 빈 칸이 정확히 하나라면, 그 칸에 숫자를 채운다.

부분적으로 채워진 스도쿠 퍼즐이 주어진다. 더 이상 이 방법으로 채울 수 없을 때까지 크로스 해칭만 반복해서 적용한 결과를 출력하라. 다른 방법으로 빈 칸을 채우면 안 된다.

입력으로 주어지는 퍼즐이 처음부터 스도쿠 규칙을 어기거나, 어떤 행, 열, 3x3 격자에서 필요한 숫자를 놓을 수 있는 칸이 하나도 없는 모순 상태일 수 있다. 이런 경우도 판별해야 한다.

입력

입력은 9개의 줄로 이루어진다. 각 줄은 9개의 문자로 이루어져 있으며, 각 문자는 1부터 9까지의 숫자 또는 .이다. 마침표는 아직 채워지지 않은 빈 칸을 뜻한다.

출력

퍼즐이 스도쿠 규칙을 지키고 모순이 없다면, 입력과 같은 9줄 형식으로 크로스 해칭만 적용한 결과를 출력한다. 그렇지 않다면 ERROR를 출력한다.

예제4

  1. 예제 1

    입력
    ..9......
    .....4...
    .......4.
    .........
    .4.......
    .........
    .........
    .........
    .........
    
    예상 출력
    4.9......
    .....4...
    .......4.
    .........
    .4.......
    .........
    .........
    .........
    .........
    
  2. 예제 2

    입력
    ...1...6.
    18...9...
    ..7.642..
    2.9..6.5.
    .43...72.
    .6.3..9.1
    ..265.1..
    ...2...97
    .5...3...
    
    예상 출력
    524137869
    186529473
    397864215
    219476358
    843915726
    765382941
    972658134
    638241597
    451793682
    
  3. 예제 3

    입력
    1........
    ..1......
    .......1.
    .........
    .........
    .........
    .........
    .........
    .........
    
    예상 출력
    ERROR
    
  4. 예제 4

    입력
    ........2
    ....1....
    1........
    ......1..
    .........
    .........
    .........
    .......1.
    .........
    
    예상 출력
    ERROR