홀덤에서 상대의 최고 패 읽기

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

문제

포커는 조커가 없는 표준 52장 카드 덱으로 진행합니다. 각 카드는 숫자(rank)와 무늬(suit)를 가집니다.

카드의 숫자를 오름차순으로 나열하면 A, 2, 3, 4, 5, 6, 7, 8, 9, T, J, Q, K, A 입니다(A는 가장 높은 카드도, 가장 낮은 카드도 될 수 있습니다). 카드의 무늬를 오름차순으로 나열하면 클럽(c), 다이아몬드(d), 하트(h), 스페이드(s) 입니다. 무늬의 순서는 오직 출력 정렬에만 쓰이며, 패나 카드의 가치를 정하는 데에는 전혀 사용하지 않습니다. 따라서 덱에는 13 x 4 = 52장의 카드가 있습니다.

포커 패(hand)는 다섯 장의 카드로 이루어집니다. 가능한 패를 가장 높은 것부터 낮은 것 순서로 나열하고, 각 패에 대한 예를 굵게 표시했습니다.

  • 로열 플러시(Royal Flush) -- 에이스, 킹, 퀸, 잭, 텐이 모두 같은 무늬. 예: Ad Kd Qd Jd Td
  • 스트레이트 플러시(Straight Flush) -- 숫자가 연속된 다섯 장이 모두 같은 무늬. 에이스는 높게 또는 낮게 쓸 수 있으나 동시에 둘 다는 안 됩니다. 스트레이트 플러시가 둘 이상이면 가장 높은 카드를 가진 쪽이 이깁니다. 예: Ah 5h 4h 3h 2h
  • 포 오브 어 카인드(Four of a Kind) -- 같은 숫자의 카드 네 장. 조건을 만족하는 패가 둘 이상이면 더 높은 포 오브 어 카인드가 이깁니다. 숫자가 같다면 네 장 밖의 카드가 더 높은 쪽이 이깁니다. 예: Kc 8s 8h 8d 8c
  • 풀 하우스(Full House) -- 같은 숫자 세 장과 다른 숫자로 같은 두 장. 먼저 세 장의 숫자를 비교하고, 그것이 같으면 두 장(페어)의 숫자로 정합니다. 예를 들어 9s 9h 9d 4d 4cAs Ah 8s 8h 8d를 이깁니다. 예: Ts Th 3s 3h 3d
  • 플러시(Flush) -- 숫자에 상관없이 같은 무늬 다섯 장. 가장 높은 카드부터 비교하고, 같으면 그다음으로 높은 카드를 차례로 비교합니다. 예: Kc 9c 8c 5c 2c
  • 스트레이트(Straight) -- 무늬는 섞여 있어도 숫자가 연속된 다섯 장. 에이스는 높게 또는 낮게 쓸 수 있으나 동시에 둘 다는 안 됩니다. 스트레이트가 둘이면 가장 높은 카드를 가진 쪽이 이깁니다. 예: 9s 8h 7h 6c 5d
  • 쓰리 오브 어 카인드(Three of a Kind) -- 같은 숫자 세 장. 더 높은 쓰리 오브 어 카인드가 이기고, 같다면 세 장 밖의 카드가 더 높은 쪽이 이깁니다. 예: Ks 8h 6h 6d 6c

홀덤(Hold 'em)은 포커의 한 종류입니다. 각 플레이어는 앞면이 보이지 않게 카드 두 장을 받는데, 이를 홀 카드(hole cards)라고 합니다. 그다음 보드(the board)라고 부르는 다섯 장을 탁자 가운데에 앞면이 보이도록 놓습니다. 플레이어의 패는 자신의 홀 카드 두 장과 보드의 다섯 장을 어떻게 조합하든 만들 수 있는 가장 좋은 다섯 장짜리 포커 패입니다.

당신은 보드의 다섯 장과 자신의 홀 카드 두 장, 즉 일곱 장을 알고 있습니다. 상대의 홀 카드 두 장은 당신이 볼 수 없으며, 덱에 남은 카드 중에서 정해집니다. 상대가 만들 수 있는 가장 좋은 다섯 장짜리 패를 구하세요. (당신이 볼 수 있는 일곱 장이 무엇이든, 상대는 항상 최소한 쓰리 오브 어 카인드는 만들 수 있으므로 그보다 약한 패를 답으로 내는 경우는 없습니다.)

입력

첫째 줄에 데이터 세트의 개수 n이 주어집니다.

각 데이터 세트는 한 줄로 이루어지며, 공백 하나로 구분된 두 글자짜리 문자열 일곱 개가 있습니다. 각 문자열은 카드 하나를 나타내며, 첫 글자는 숫자, 둘째 글자는 무늬입니다. 앞의 다섯 장은 보드이고, 마지막 두 장은 당신의 홀 카드입니다. 카드는 특정한 순서 없이 주어집니다.

출력

각 데이터 세트마다 상대가 만들 수 있는 가장 좋은 다섯 장짜리 패와 그 패의 이름을 한 줄에 출력합니다.

다섯 장의 카드는 먼저 숫자를 기준으로 내림차순(출력에서 에이스는 항상 가장 높은 것으로 취급)으로, 숫자가 같으면 무늬를 기준으로 정렬해 나열합니다. 가장 좋은 패에서 어떤 자리의 카드가 서로 다른 두 개 이상의 무늬가 될 수 있다면(즉 무늬가 동점이라면) 그 무늬를 *로 출력합니다. 무늬로 정렬할 때 *는 가장 낮은 무늬로 취급합니다.

카드 다섯 장 뒤에 패의 이름을 출력합니다. 가능한 이름은 다음과 같습니다: ROYAL FLUSH, STRAIGHT FLUSH, FOUR OF A KIND, FULL HOUSE, FLUSH, STRAIGHT, THREE OF A KIND.