포커 핸드

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

문제

표준 52장 카드 덱은 클럽(clubs), 다이아몬드(diamonds), 하트(hearts), 스페이드(spades)의 네 가지 무늬로 나뉜 52장의 카드로 이루어진다. 각 무늬마다 낮은 것부터 높은 것 순으로 2, 3, 4, 5, 6, 7, 8, 9, 10, 잭(jack), 퀸(queen), 킹(king), 에이스(ace)의 13가지 끗수(rank)가 있다.

카드는 끗수를 나타내는 문자('2'...'9'는 2...9, 'T'는 10, 'J'는 잭, 'Q'는 퀸, 'K'는 킹, 'A'는 에이스)와 그 뒤에 오는 무늬 문자('C'는 클럽, 'D'는 다이아몬드, 'H'는 하트, 'S'는 스페이드)로 표기한다. 카드는 끗수로 순서가 매겨지며, 무늬는 이 순서에 영향을 주지 않는다.

포커 핸드(poker hand)는 서로 다른 다섯 장의 카드로 이루어진 집합이다. 각 핸드는 하나의 등급(ranking)을 가진다. 더 높은 등급의 핸드가 더 낮은 등급의 핸드를 이긴다. 같은 등급의 두 핸드는 그 등급에 고유한 동점 규칙(tie-break)으로 비교하며, 둘 중 하나가 이기거나 서로 비긴다.

포커 등급 목록은 가장 낮은 것부터 가장 높은 것 순으로 아래와 같다. 한 핸드가 여러 등급을 만족하면 그중 가장 높은 등급만 인정한다.

  • 하이 카드(High Card) — 아래의 어떤 등급에도 해당하지 않는다. 두 하이 카드 핸드를 비교할 때는 가장 높은 카드를 먼저 비교하고, 같으면 그다음으로 높은 카드를 비교하는 식으로 진행한다. (예: QS JH 9C 7H 3D)
  • 원 페어(One Pair) — 같은 끗수의 카드 두 장. 끗수가 높은 페어가 낮은 페어를 이긴다. 페어가 같으면 나머지 세 장을 끗수가 높은 순서대로 비교해 동점을 가른다(하이 카드와 동일). (예: 6D 6H QD 9H 4S)
  • 투 페어(Two Pairs) — 같은 끗수의 카드 두 쌍. 두 투 페어를 비교할 때는 높은 페어를 먼저 비교하고, 그다음 낮은 페어, 마지막으로 남은 다섯 번째 카드의 끗수를 비교한다. (예: JH JS TS TD 8S)
  • 트리플(Three of a Kind) — 같은 끗수의 카드 세 장. 끗수가 높은 트리플이 낮은 트리플을 이긴다. 같으면 나머지 두 장을 높은 순서대로 비교한다. (예: 5S 5H 5D JH 6D)
  • 스트레이트(Straight) — 끗수가 연속인 다섯 장. 에이스는 킹 위 또는 2 아래 중 하나로만 셀 수 있으며 둘 다는 안 되므로, 순환(wrap)은 허용되지 않는다. 두 스트레이트는 가장 높은 카드의 끗수로 비교한다(A 2 3 4 5의 경우 가장 높은 카드는 5로 본다). (예: QH JC TH 9D 8D)
  • 플러시(Flush) — 같은 무늬의 다섯 장. 두 플러시는 가장 높은 카드, 그다음으로 높은 카드 순으로 비교한다(하이 카드와 동일). (예: AS JS 8S 6S 5S)
  • 풀 하우스(Full House) — 같은 끗수 세 장과 또 다른 같은 끗수 두 장. 두 풀 하우스를 비교할 때는 세 장의 끗수를 먼저 비교하고, 그다음 두 장의 끗수를 비교한다. (예: 7S 7H 7C JC JH)
  • 포 카드(Four of a Kind) — 같은 끗수의 카드 네 장. 두 포 카드는 먼저 네 장의 끗수로 비교하고, 같으면 다섯 번째 카드의 끗수로 동점을 가른다. (예: 4C 4D 4H 4S TD)
  • 스트레이트 플러시(Straight Flush) — 스트레이트이면서 동시에 플러시인 핸드. 동점 규칙은 스트레이트와 같다. (예: TH 9H 8H 7H 6H)

모든 포커 핸드의 집합을 $H$라 하자. 임의의 두 포커 핸드 $a$, $b$에 대해 $a$가 $b$를 이기는 것과 $v(a) > v(b)$인 것이 서로 동치가 되는 평가 함수 $v : H \to {1, \dots, 7462}$가 존재한다. 이러한 평가 함수는 정확히 하나뿐이다.

포커 핸드 $a$가 주어질 때 $v(a)$의 값을 구하라.

입력

입력에는 서로 다른 다섯 장의 카드 표기가 공백으로 구분되어 주어진다. 각 카드는 끗수와 무늬를 나타내는 두 문자로 표기한다. 끗수는 '2'...'9', 'T', 'J', 'Q', 'K', 'A'(오름차순)로, 무늬는 'C', 'D', 'H', 'S'로 나타낸다.

출력

주어진 핸드 $a$에 대한 평가 함수 $v(a)$의 값을 출력한다.