어떤 방식으로든 풀기만 하면 되지만, 문제에서 주어진 '7회 이내로 풀기' 조건을 항상 달성할 수 있는 풀이는 다음과 같다.
- 먼저 1234를 시도한다.
- 정답을 맞춘 경우, 즉 4S가 나온 경우 여기서 풀이는 종료된다.
- 정답이 아닌 경우, 현재까지의 판정 기록을 만족하는 숫자 중 가장 작은 숫자를 시도한다.
- 예를 들어, 1234에 대해 0S 2B의 판정 결과가 나온 경우, 1234와 0S 2B의 관계를 갖는 숫자는 4526, 3456 등 많지만 그 중 가장 작은 숫자인 2156을 시도한다.
- 1234에 대해 0S 3B, 2145에 2S 0B의 판정이 나온 경우, 이를 모두 만족하는 숫자는 2643, 3146 등 많지만 그 중 가장 작은 숫자인 2163을 시도한다.
- 2로 돌아간다.
위 방법을 이용하게 되면 최대 6번의 숫자 시도에서 정답을 맞출 수 있게 된다.
의심 많은 사람을 위해, 정답으로 가능한 360가지 모든 경우에 대해 위 풀이로 최대 몇 회 시도가 필요한지 정리한 결과를 첨부한다.
enumerate_result
예시 풀이는 다음과 같다:
- 1234를 시도한다 → 결과 0S 2B가 나왔다.
- 1234와 0S 2B의 관계를 가지는 숫자 중 가장 작은 숫자는 2156이다.
- 2156을 시도한다 → 결과 3S 0B가 나왔다.
- 1234와 0S 2B의 관계를 가지며, 2156과 3S 0B의 관계를 가지는 숫자 중 가장 작은 숫자는 2356이다.
- 2356을 시도한다 → 결과 2S 0B가 나왔다.
- 1234와 0S 2B, 2156과 3S 0B, 2356과 2S 0B의 관계를 가지는 숫자 중 가장 작은 수는 4156 이다.
- 4156을 시도한다 → 결과 4S 0B 가 나와서 종료