텍사스 홀덤 승률

아직 제출이 없습니다시간 제한8초메모리 제한256 MB

문제

텍사스 홀덤은 조커를 뺀 표준 52장 카드로 하는 포커 게임이다. 카드는 무늬 4종류(스페이드, 하트, 다이아몬드, 클로버)와 끗수 13종류(A, K, Q, J, 그리고 10부터 2까지)로 이루어진다.

베팅을 빼고 보면 한 판은 다음처럼 진행된다.

먼저 각 참가자가 카드 두 장을 뒷면으로 받는다. 이 두 장을 홀 카드라 하고, 쇼다운 전까지 공개하지 않는다. 그다음 딜러가 카드 세 장을 앞면으로 깔아 모든 참가자가 함께 쓰는 커뮤니티 카드로 만든다. 이 세 장을 플롭이라 한다. 이어서 커뮤니티 카드가 한 장 더 깔리고(턴), 마지막으로 한 장이 더 깔린다(리버).

리버까지 나오면 쇼다운으로 넘어간다. 모든 참가자가 홀 카드를 공개하고, 자기 홀 카드 두 장과 커뮤니티 카드 다섯 장을 합친 일곱 장에서 다섯 장을 골라 핸드를 만든다. 가장 강한 핸드를 만든 참가자가 이긴다.

핸드는 열 종류가 있고, 강한 것부터 나열하면 다음과 같다.

  • 로열 스트레이트 플러시: 무늬가 같은 A, K, Q, J, 10. 스트레이트 플러시의 특수한 경우다.
  • 스트레이트 플러시: 끗수가 연속인 다섯 장(예를 들어 7, 6, 5, 4, 3)이면서 무늬가 모두 같다.
  • 포 카드: 끗수가 같은 카드 네 장.
  • 풀 하우스: 끗수가 같은 카드 세 장과 다른 끗수의 페어 하나.
  • 플러시: 무늬가 모두 같은 다섯 장. 단 끗수가 연속이면 안 된다.
  • 스트레이트: 끗수가 연속인 다섯 장. 단 무늬가 모두 같으면 안 된다.
  • 트리플: 끗수가 같은 카드가 정확히 세 장.
  • 투 페어: 끗수가 같은 두 장과, 또 다른 같은 끗수의 두 장.
  • 원 페어: 끗수가 같은 카드가 정확히 두 장.
  • 하이 카드: 위 어디에도 해당하지 않는 나머지.

연속을 따질 때 J, Q, K는 각각 11, 12, 13으로 본다. A는 K 바로 위로도 쓰고 2 바로 아래로도 쓸 수 있어서 A, K, Q, J, 10과 5, 4, 3, 2, A는 모두 연속이지만 3, 2, A, K, Q 같은 배열은 연속이 아니다.

같은 종류의 핸드가 둘 이상이면 카드 끗수를 비교해 순위를 가린다. 세트를 이루는 카드(페어, 트리플, 포 카드)를 먼저 비교하고, 그다음 남은 카드를 높은 끗수부터 하나씩 비교해 순위가 갈릴 때까지 이어간다. 종류별로 정리하면 다음과 같다.

  • 로열 스트레이트 플러시: 순위를 가리지 않는다.
  • 스트레이트 플러시: 가장 높은 카드를 비교한다.
  • 포 카드: 네 장을 비교한 뒤 남은 한 장을 비교한다.
  • 풀 하우스: 세 장을 비교한 뒤 페어를 비교한다.
  • 플러시: 다섯 장을 높은 쪽부터 하나씩 비교한다.
  • 스트레이트: 가장 높은 카드를 비교한다.
  • 트리플: 세 장을 비교한 뒤 남은 두 장을 비교한다.
  • 투 페어: 높은 페어, 낮은 페어, 마지막 한 장 순서로 비교한다.
  • 원 페어: 페어를 비교한 뒤 남은 세 장을 비교한다.
  • 하이 카드: 다섯 장을 높은 쪽부터 하나씩 비교한다.

끗수의 순서는 높은 쪽부터 A, K, Q, J, 10, 9, ..., 2이다. 다만 스트레이트에서 2 아래로 쓴 A는 2보다 낮다. 끝까지 비교해도 순위가 갈리지 않는 경우가 있다. 무늬는 순위를 가릴 때 전혀 쓰지 않는다.

비교 예를 몇 개 들면 다음과 같다. 설명을 위한 예일 뿐이라 텍사스 홀덤에서 실제로 나올 수 없는 조합도 섞여 있다.

  • J, J, J, 6, 3과 K, K, Q, Q, 8. 트리플이 투 페어보다 강하므로 앞쪽이 이긴다.
  • J, J, J, 6, 3과 K, Q, 8, 8, 8. 둘 다 트리플이므로 트리플을 이루는 J와 8을 먼저 본다. J가 높아 앞쪽이 이기고, 남은 6, 3과 K, Q는 보지 않는다.
  • Q, J, 8, 6, 3과 Q, J, 8, 5, 3. 둘 다 하이 카드다. 높은 세 장 Q, J, 8이 같으므로 네 번째 카드를 비교하고, 6이 5보다 높아 앞쪽이 이긴다.
  • 9, 9, Q, 7, 2와 9, 9, J, 8, 5. 둘 다 원 페어이고 페어의 끗수도 같으므로 남은 카드를 높은 쪽부터 비교한다. Q가 J보다 높아 앞쪽이 이긴다.

이제 상대 한 명과 텍사스 홀덤을 한다고 하자. 홀 카드와 플롭은 이미 깔렸고, 당신은 상대의 홀 카드가 무엇인지 알고 있다. 하지만 턴과 리버가 무엇일지는 모른다.

아직 보이지 않은 45장에서 턴과 리버가 균등한 확률로 뽑힌다고 할 때, 당신이 이길 확률을 구하라. 당신과 상대는 항상 만들 수 있는 가장 강한 핸드를 만든다. 비기는 경우는 지는 것으로 센다.

입력

입력은 여러 개의 데이터 집합으로 이루어진다. 데이터 집합 하나는 세 줄이다.

내카드1 내카드2
상대카드1 상대카드2
커뮤니티카드1 커뮤니티카드2 커뮤니티카드3

첫째 줄에는 당신의 홀 카드 두 장, 둘째 줄에는 상대의 홀 카드 두 장, 셋째 줄에는 플롭 세 장이 주어진다. 한 줄 안의 카드는 공백으로 구분한다.

카드 한 장은 문자 두 개로 적는다. 첫 문자는 무늬로 S(스페이드), H(하트), D(다이아몬드), C(클로버) 중 하나다. 둘째 문자는 끗수로 A, K, Q, J, T(10), 또는 9부터 2까지의 숫자 중 하나다. 한 데이터 집합의 카드 일곱 장은 모두 다르다.

# 한 글자만 있는 줄이 나오면 입력이 끝난다. 이 줄은 처리하지 않는다.

출력

데이터 집합마다 당신이 이길 확률을 소수점 아래 10자리로 반올림해 한 줄에 출력한다. 정수 부분의 0과 끝자리 0을 모두 적어서, 확률이 0이면 0.0000000000, 1이면 1.0000000000으로 출력한다.

턴과 리버는 남은 45장에서 두 장을 고르는 (452)=990\binom{45}{2} = 990가지 중 하나이므로 확률은 항상 990분의 정수다. 따라서 10자리 반올림 결과는 하나로 정해진다.