페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#2450

Sudoku 1s - MB

문제

Sudoku란 9행 9열의 칸에 1이상 9이하의 아래의 규칙에 따라 숫자를 알맞게 채워넣는 게임이다. 규칙은 다음과 같다.

● 각 행에는 1 부터 9 까지의 숫자가 하나씩 들어가야 한다. ● 각 열에는 1 부터 9 까지의 숫자가 하나씩 들어가야 한다. ● 굵은 테두리를 두른, 가로 세로 3칸인 작은 정사각형에도 1부터 9까지의 숫자가 하나씩 들어가야 한다.

 

 

임의의 sudoku 퍼즐이 주어졌을 때, 채워지지 않은 칸들에 대해 규칙을 지키며 채울 수 있는 숫자들을 출력해주는 프로그램을 작성하라. 만약 한 칸에 대해서 모든 숫자를 출력할 수 있을 경우 다음과 같이 출력해야 한다.

 

 

출력할 수 있는 모든 숫자로 채울 수 없고, 몇 가지 숫자로 채울 수 있는 경우에는 그 숫자에 대응되는 위치에 숫자를 출력하고, 채울 수 없는 숫자의 경우 출력하지 않는다. 예를 들어 맨 위의 그림에서 1행 1열의 경우 2, 3, 7중 하나로 채울 수 있으며, 이 경우는 다음과 같이 출력되어야 한다.

 

 

해당 칸에 숫자가 채워져 있을 경우에는 해당 숫자만 출력하도록 한다.


입력

입력은 9줄에 9개의 숫자로 이뤄지며, 숫자는 0이상 9이하의 정수가 들어온다. 테스트 케이스의 위에서 i번째 줄의 왼쪽부터 j번째 입력되느 숫자는 sudoku 퍼즐의 해당 칸에 채워진 숫자를 뜻하며 0일 경우는 해당 칸이 채줘지지 않음을 의미한다. 올바르게 채워지지 않은 sudoku 퍼즐은 들어오지 않는다.


출력

입력에 대해 각 칸에 대해 아래의 예시같이 출력하도록한다. 숫자가 차 있는 숫자에 대응하는 칸의 경우에는 '*'문자로 해당 칸을 채우고 이 가운데에 채워진 숫자를 출력하고, 숫자가 차 있지 않았던 칸의 경우에는 가능한 후보 숫자들을 알맞게 출력한다.


예제

0 0 8 0 1 0 0 0 9

6 0 1 0 9 0 3 2 0
0 4 0 0 3 7 0 0 5
0 3 5 0 0 8 2 0 0
0 0 2 6 5 0 8 0 0
0 0 4 0 0 1 7 5 0
5 0 0 3 4 0 0 8 0
0 9 7 0 8 0 5 0 6
1 0 0 0 6 0 9 0 0
+---+---+---+---+---+---+---+---+---+

|.23|.2.|***|.2.|***|.2.|...|...|***|
|...|.5.|*8*|45.|*1*|456|4.6|4.6|*9*|
|7..|7..|***|...|***|...|...|7..|***|
+---+---+---+---+---+---+---+---+---+
|***|...|***|...|***|...|***|***|...|
|*6*|.5.|*1*|45.|*9*|

로그인해야 코드를 작성할 수 있어요.