금고 해제사
면접 대비시간 제한1초메모리 제한128 MB
위치가 맞는 숫자 개수와 위치는 틀리지만 포함된 숫자 개수를 담은 최대 10개의 추측이 주어질 때, 비밀 4자리 코드가 유일한지, 불가능한지, 여러 개인지 판정한다.
문제
마스터마인드(Mastermind)와 비슷한 게임을 하는 사람을 지켜보고 있다. 이 게임의 목표는 단서를 이용한 똑똑한 추측으로 비밀 코드를 알아내는 것이다. 비밀 코드는 0000부터 9999까지의 네 자리 수이며, 예를 들어 3321이라고 하자.
플레이어가 추측을 하나 제시하면(예: 1223), 그 추측이 정답에 얼마나 가까운지를 알려 주는 단서를 받는다. 단서는 두 개의 숫자로 이루어진다.
- 완전히 맞은 자릿수: 숫자와 위치가 모두 맞은 개수
- 위치는 틀렸지만 숫자는 맞은 자릿수: 위 개수 외에, 숫자는 코드에 있지만 자리가 틀린 개수
비밀 코드가 3321이고 추측이 1223일 때, 위치까지 정확히 맞은 자리는 한 개(세 번째 자리의 2)이고, 숫자는 맞았지만 자리가 틀린 것은 두 개(1과 2)이므로 단서는 1/2가 된다. 추측이 1110이면 단서는 0/1이다. 제자리에 맞은 숫자는 없고, 숫자만 맞고 자리가 틀린 것은 1 하나뿐이기 때문이다.
여러 개의 추측과 그에 대한 단서가 주어질 때, 비밀 코드를 알아내는 프로그램을 작성하라.
입력
첫 번째 줄에 테스트 케이스의 수 이 주어진다.
각 테스트 케이스의 첫 줄에는 추측의 개수 ()가 주어진다. 이어지는 개의 줄에는 각각 정확히 8개의 문자가 있다: 네 자리 코드, 공백 한 칸, 완전히 맞은 자릿수를 나타내는 한 자리 숫자, /, 그리고 위치는 틀렸지만 숫자는 맞은 자릿수를 나타내는 한 자리 숫자.
출력
각 테스트 케이스마다 한 줄을 출력한다.
- 모든 추측과 일치하는 코드가 하나도 없으면
impossible - 모든 추측과 일치하는 코드가 정확히 하나이면 그 비밀 코드(앞의 0을 유지한 네 자리 수)
- 모든 추측과 일치하는 코드가 둘 이상이면
indeterminate