만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

간단한 솔리테어

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

요약
뒤집은 카드를 세 장 앞의 카드와 비교해 짝이 맞으면 제거하는 규칙을 시뮬레이션하고, 끝까지 남은 카드를 출력합니다.
난이도

보통10점 중 4점

유형
시뮬레이션, 스택
정답자
아직 제출이 없습니다

문제

솔리테어에는 여러 종류가 있지만, 대부분은 카드를 펼쳐 놓을 공간이 필요합니다. 이 게임은 덱을 손에 든 채로 할 수 있습니다.

이 게임은 표준 5252장 카드 덱을 사용합니다. 각 카드는 44가지 무늬 중 하나인 스페이드(S), 하트(H), 다이아몬드(D), 클럽(C)을 가지며, 1313가지 숫자 중 하나인 A, 22, 33, 44, 55, 66, 77, 88, 99, 1010(T), J, Q, K를 가집니다.

덱을 뒷면이 보이게 들고, 덱의 아래쪽부터 위쪽으로 카드를 한 장씩 앞면이 보이도록 뒤집습니다. 카드를 뒤집을 때마다 이미 뒤집힌 카드 중 세 장 앞에 있는 카드와 숫자 또는 무늬가 같은지 확인합니다. 숫자가 같으면 두 카드와 그 사이에 있는 두 카드를 제거합니다. 무늬만 같으면 두 카드만 제거합니다. 이때 남은 뒤집힌 카드 중 하나 이상이 세 장 앞 카드와 맞게 되어 연쇄가 일어날 수 있습니다. (연쇄 처리 규칙은 아래에 자세히 설명합니다.) 한 연쇄의 모든 동작이 끝나면 다음 카드를 뒤집습니다. 덱을 한 번 넘겨서 모든 카드가 제거되면 이깁니다.

연쇄 중에 동작을 고를 수 있다면, 인접한 네 장을 제거하는 동작을 인접하지 않은 두 장을 제거하는 동작보다 우선합니다. 제거하는 카드 수가 같다면, 가장 최근에 뒤집힌 카드를 제거하는 동작을 고릅니다.

카드가 뒤집히는 순서가 주어졌을 때, 게임이 끝난 뒤 남아 있는 카드를 구하세요.

입력

입력은 네 줄이며, 각 줄에는 1313장의 카드가 있습니다. 카드는 게임에서 뒤집히는 순서대로 나열됩니다. 각 카드는 연속된 두 문자로 표시합니다. 첫 문자는 숫자(A, 2, 3, 4, 5, 6, 7, 8, 9, T, J, Q, K 중 하나)이고, 둘째 문자는 무늬(S, H, D, C 중 하나)입니다. 인접한 카드는 공백 한 칸으로 구분합니다.

출력

게임이 끝난 뒤 남은 카드의 장수를 출력하고, 이어서 입력과 같은 형식으로 남은 카드를 출력합니다.

예제1

  1. 예제 1

    입력
    TC 2C 6C TS KC QS QC 3C KD 8D JH JS KH
    5D JD 2S 8S AS 9S 3D 5H 9C AH 4D 4C KS
    JC 4S 7S 6D 2H 7C 8C 7D AD 7H TH 2D QH
    8H 9H 5C TD 3S 6H 3H QD 5S 9D 4H 6S AC
    
    예상 출력
    2 3S 9D