간단한 솔리테어
시간 제한1초메모리 제한1024 MB
뒤집은 카드를 세 장 앞의 카드와 비교해 짝이 맞으면 제거하는 규칙을 시뮬레이션하고, 끝까지 남은 카드를 출력합니다.
문제
솔리테어에는 여러 종류가 있지만, 대부분은 카드를 펼쳐 놓을 공간이 필요합니다. 이 게임은 덱을 손에 든 채로 할 수 있습니다.
이 게임은 표준 장 카드 덱을 사용합니다. 각 카드는 가지 무늬 중 하나인 스페이드(S), 하트(H), 다이아몬드(D), 클럽(C)을 가지며, 가지 숫자 중 하나인 A, , , , , , , , , (T), J, Q, K를 가집니다.
덱을 뒷면이 보이게 들고, 덱의 아래쪽부터 위쪽으로 카드를 한 장씩 앞면이 보이도록 뒤집습니다. 카드를 뒤집을 때마다 이미 뒤집힌 카드 중 세 장 앞에 있는 카드와 숫자 또는 무늬가 같은지 확인합니다. 숫자가 같으면 두 카드와 그 사이에 있는 두 카드를 제거합니다. 무늬만 같으면 두 카드만 제거합니다. 이때 남은 뒤집힌 카드 중 하나 이상이 세 장 앞 카드와 맞게 되어 연쇄가 일어날 수 있습니다. (연쇄 처리 규칙은 아래에 자세히 설명합니다.) 한 연쇄의 모든 동작이 끝나면 다음 카드를 뒤집습니다. 덱을 한 번 넘겨서 모든 카드가 제거되면 이깁니다.
연쇄 중에 동작을 고를 수 있다면, 인접한 네 장을 제거하는 동작을 인접하지 않은 두 장을 제거하는 동작보다 우선합니다. 제거하는 카드 수가 같다면, 가장 최근에 뒤집힌 카드를 제거하는 동작을 고릅니다.
카드가 뒤집히는 순서가 주어졌을 때, 게임이 끝난 뒤 남아 있는 카드를 구하세요.
입력
입력은 네 줄이며, 각 줄에는 장의 카드가 있습니다. 카드는 게임에서 뒤집히는 순서대로 나열됩니다. 각 카드는 연속된 두 문자로 표시합니다. 첫 문자는 숫자(A, 2, 3, 4, 5, 6, 7, 8, 9, T, J, Q, K 중 하나)이고, 둘째 문자는 무늬(S, H, D, C 중 하나)입니다. 인접한 카드는 공백 한 칸으로 구분합니다.
출력
게임이 끝난 뒤 남은 카드의 장수를 출력하고, 이어서 입력과 같은 형식으로 남은 카드를 출력합니다.