마스터마인드

면접 대비

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

요약
최대 100개의 추측과 정확한 자리 수, 잘못된 자리 수가 주어질 때 모든 조건과 맞는 가장 작은 네 자리 비밀 숫자를 찾고, 없으면 NONE을 출력한다.
난이도

보통10점 중 4점

유형
완전 탐색, 구현, 시뮬레이션, 해시맵
정답자
아직 제출이 없습니다

문제

마스터마인드(MasterMind)는 두 명이 즐기는 고전 게임이다.

한 명은 출제자로, 1000≤S≤99991000 \le S \le 9999 범위의 네 자리 비밀 숫자 SS를 정한다. 다른 한 명은 해독자로, 코드를 알아낼 때까지 네 자리 숫자를 계속 추측한다.

해독자가 추측한 숫자 GiG_i (1000≤Gi≤99991000 \le G_i \le 9999)마다, 출제자는 두 정수로 답한다.

  • CiC_i (0≤Ci≤40 \le C_i \le 4): 추측한 숫자의 자리 중, 숫자와 위치가 모두 비밀 숫자와 일치하는 자리의 개수.
  • WiW_i (0≤Wi≤4−Ci0 \le W_i \le 4 - C_i): CiC_i에 포함되지 않은 나머지 자리 중, 숫자는 맞지만 위치가 틀린 자리의 개수.

예를 들어 비밀 숫자가 23512351이고 해독자가 13501350을 추측하면 답은 2 1이다. 숫자 33과 55는 위치까지 정확하고, 11은 들어 있지만 위치가 다르기 때문이다. 또 다른 예로, 다섯 자리 변형에서 비밀 숫자가 1122311223이고 추측이 1232212322이면 답은 2 2이다.

게임 도중에 이루어진 NN개 (1≤N≤1001 \le N \le 100)의 추측과 그 답이 주어진다. 아직 출제자의 비밀 숫자가 될 수 있는, 즉 모든 추측과 답에 모순되지 않는 네 자리 숫자 (1000≤S≤99991000 \le S \le 9999) 중 가장 작은 것을 출력하라. 그런 숫자가 없으면 NONE을 출력한다.

입력

  • 첫째 줄: 정수 NN.
  • 둘째 줄부터 N+1N+1째 줄까지: i+1i+1째 줄에는 ii번째 추측과 두 개의 응답이 공백으로 구분된 세 정수 GiG_i, CiC_i, WiW_i로 주어진다.

출력

  • 비밀 숫자와 같은 범위(1000≤S≤99991000 \le S \le 9999)에서, 비밀 코드가 될 수 있는 가장 작은 네 자리 숫자를 한 줄에 출력한다. 그런 숫자가 없으면 NONE이라는 단어를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    4
    3157 1 2
    1350 2 1
    6120 0 2
    2381 3 0
    
    예상 출력
    2351