인접 마스터마인드
시간 제한1초메모리 제한128 MB
타겟과 추측 문자열이 주어질 때, 정확히 일치하는 블랙, 인접한 그레이, 멀리 떨어진 화이트 점수를 우선순위대로 계산합니다.
문제
마스터마인드는 여러 색의 핀을 순서대로 놓은 비밀 배열을 맞히는 게임이다. 실제 핀 대신 대문자 A부터 Z까지의 글자를 색으로 사용할 수 있다. 한 사람은 목표 배열을 정해 숨기고, 다른 사람은 추측 배열을 낸다. 목표를 아는 사람은 추측 배열의 점수를 계산해 알려 준다.
이 변형에서는 점수를 다음 순서로 계산한다.
- 검은 점수는 목표 배열과 추측 배열의 같은 위치에 같은 글자가 있는 개수이다.
- 회색 점수는 검은 점수에 포함되지 않은 추측 글자 중에서, 바로 왼쪽이나 오른쪽 위치의 아직 사용되지 않은 목표 글자와 같은 글자의 개수이다.
- 흰 점수는 검은 점수나 회색 점수에 포함되지 않은 추측 글자 중에서, 두 칸 이상 떨어진 아직 사용되지 않은 목표 글자와 같은 글자의 개수이다.
하나의 목표 글자는 최대 한 번만 매칭될 수 있고, 하나의 추측 글자도 최대 한 종류의 점수에만 기여할 수 있다. 검은 점수를 먼저 확정한 뒤, 남은 글자로 회색 점수를 가능한 한 많이 계산하고, 다시 남은 글자로 흰 점수를 가능한 한 많이 계산한다. 각 입력 줄에 대해 추측 배열의 점수를 출력하라.
입력
입력은 여러 줄로 주어진다. 각 줄에는 목표 배열과 추측 배열이 공백 하나로 구분되어 주어진다. 각 배열은 길이가 2 이상 50 이하인 문자열이며, 문자는 대문자 A부터 Z까지이다. 같은 줄의 목표 배열과 추측 배열의 길이는 항상 같다.
한 줄에 # 하나만 주어지면 입력이 끝난다. 이 줄은 처리하지 않는다.
출력
목표 배열과 추측 배열이 주어진 각 입력 줄마다 한 줄을 출력한다. 출력 형식은 guess: b black, g grey, w white이다. 여기서 guess는 입력의 추측 배열이고, b, g, w는 각각 검은 점수, 회색 점수, 흰 점수이다.