포럼
문제 COCI00087

Cross

설명

스도쿠 게임의 목표는 \(9 \times 9\) 격자에 \(1\) 이상 \(9\) 이하의 정수를 채워, 각 행, 각 열, 그리고 아홉 개의 \(3 \times 3\) 상자 각각에 아홉 개의 수가 모두 들어가게 하는 것이다. 시작 보드는 나머지 칸의 값을 논리적으로 추론할 수 있도록 부분적으로 채워져 있다. 스도쿠 퍼즐의 난이도는 다양하며, 가장 어려운 퍼즐을 풀려면 복잡한 분석 기법이 필요하다. 하지만 이 문제에서는 가장 단순한 기법 중 하나인 크로스해칭(cross-hatching)을 구현한다.

크로스해칭에서는 아홉 개의 수 중 하나를 골라, 그 수가 격자에 나타나는 각 위치에 대해 해당 행, 열, \(3 \times 3\) 상자를 지운다. 그런 다음 그 수를 놓을 수 있는 자리가 하나뿐인 \(3 \times 3\) 상자를 찾아 그 자리에 수를 놓는다.

부분적으로 채워진 격자가 주어진다. 여러분의 과제는 어떤 수에 대해서도 더 이상 추론할 수 없을 때까지, 여러 수에 대해 크로스해칭 기법을 반복해서 적용하는 것이다.

격자의 초기 배치는 유효하지 않을 수도 있다. 또한 어떤 \(3 \times 3\) 상자에서 어떤 수를 놓을 수 있는 칸이 없을 수도 있다. 두 경우 모두 오류를 보고해야 한다.

제약
입력 형식

입력은 \(9\)개의 줄로 이루어지며, 각 줄에는 정확히 \(9\)개의 문자가 있다. 각 문자는 \(1\) 이상 \(9\) 이하의 숫자이거나, 빈 칸을 나타내는 마침표(.)이다.

출력 형식

입력이 유효하고 푸는 동안 모순이 없으면, 크로스해칭으로 값을 추론할 수 있는 칸을 채워서 격자를 입력과 같은 형식으로 출력한다. 그렇지 않으면 "ERROR"(따옴표는 표기의 명확성을 위한 것)를 출력한다.
Contest #3, \(13^{th}\) December 2008

서브태스크
서브태스크점수설명

Subtask 1

70점
예제 1
입력
..9......
.....4...
.......4.
.........
.4.......
.........
.........
.........
.........
출력
4.9......
.....4...
.......4.
.........
.4.......
.........
.........
.........
.........
예제 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
입력
1........
..1......
.......1.
.........
.........
.........
.........
.........
.........
출력
ERROR
예제 4
입력
........2
....1....
1........
......1..
.........
.........
.........
.......1.
.........
출력
ERROR
문제 정보

riseoj 작성

출처 COCI 2008/2009 Contest 3

평가 및 의견

Cross

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Cross

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8