1부터 9까지 번호가 붙은 13장의 마작 패가 주어질 때, 남은 패 중에서 손패를 머리 하나와 몸통 네 개, 또는 서로 다른 머리 일곱 개로 완성하는 대기패를 모두 구한다.
보통7백트래킹재귀구현완전 탐색면접 대비아직 제출이 없습니다시간 제한1초메모리 제한256 MB알렉스는 마작을 좋아한다. 마작을 연습하려고 프로그램을 만들기로 했다.
마작은 패 136장으로 하는 게임이다. 여기서는 규칙을 단순하게 만들어, 삭수패 9종류(1삭, 2삭, 3삭, 4삭, 5삭, 6삭, 7삭, 8삭, 9삭)를 4장씩 모은 패 36장만 사용한다.
마작에는 머리와 몸통이 있다. 머리는 같은 패 2장의 조합이다. 몸통은 서로 1씩 차이 나며 연속하는 패 3장의 조합이거나, 같은 패 3장의 조합이다. 다음은 머리나 몸통인 것과 그렇지 않은 것의 예이다.
패 36장 중에서 14장을 골라 머리 1개와 몸통 4개로 나누거나 머리 7개로 나눈다. 14장은 모두 어느 한 머리나 한 몸통에 속해야 하고 남는 패가 있으면 안 된다. 이렇게 나뉜 상태를 패가 완성되었다고 한다. 단, 머리 7개로 나눌 때는 같은 종류의 머리가 2개 있으면 안 된다.
지금 패 13장이 있다. 남은 패 23장 중에서 한 장을 더 가져와 14장으로 만들었을 때 그 14장이 완성되면, 가져온 그 패를 대기패라고 한다. 알렉스는 패 13장이 있을 때 대기패를 찾는 연습을 하고 있다. 알렉스를 도와주자.
첫째 줄에 지금 가지고 있는 패 13장이 1부터 9까지의 수로 주어진다. 수는 공백으로 구분한다. 같은 수는 최대 4번까지 나온다.
대기패를 오름차순으로 한 줄에 공백으로 구분해 출력한다. 대기패가 없으면 -1을 출력한다.
첫 번째 예제에서 7을 가져오면 머리는 55, 몸통은 111, 222, 789, 789가 된다. 두 번째 예제에서는 1부터 9까지 모두 대기패이다. 세 번째 예제에서 2를 가져오면 머리가 11, 22, 33, 44, 66, 88, 99 일곱 개가 된다. 네 번째 예제에서 5를 가져오면 머리는 66, 몸통은 111, 555, 789, 789가 된다. 같은 예제에서 1을 가져오면 머리가 11, 11, 55, 66, 77, 88, 99가 되는데 같은 머리가 2개이므로 1은 대기패가 아니다. 다섯 번째 예제에서 1을 가져오면 머리 11과 몸통 111, 234, 444, 888로 나눌 수 있지만, 1삭 4장을 이미 다 쓰고 있어서 남은 23장에 1삭이 없다. 그러므로 1은 대기패가 아니다.