주사위 포커
시간 제한6초메모리 제한1024 MB
두 플레이어의 첫 라운드 주사위 5개씩이 주어질 때, 각자 최적으로 주사위를 최대 5개까지 다시 굴린 뒤 A가 이길 확률을 구합니다.
문제
주사위 포커는 주사위를 사용해 하는 포커의 한 종류다. 두 명 이상이 함께 할 수 있다. 두 명이 하는 경우의 자세한 규칙은 "게임 규칙" 항목에 나와 있다.
플레이어 A와 B가 주사위 포커를 하고 있다. 두 사람 모두 이 게임에 능숙하며 항상 최적으로 플레이한다. A는 자신의 승리 확률을 최대화하도록 플레이하고, B는 A의 승리 확률을 최소화하려 한다(B에게는 무승부도 괜찮다). 첫 라운드에서 A가 주사위를 던지고, 이어서 B가 던진다. 구경꾼인 당신은 던진 결과를 주의 깊게 살펴보고, A와 B가 다음에 무엇을 할지, 그리고 A가 이길 확률이 얼마인지 궁금해한다. 이 게임을 많이 해 보지 않은 당신은 2번째(마지막) 라운드 후 A가 이길 확률을 예측하는 프로그램을 작성하기로 한다.
게임 규칙:
첫 라운드에서 두 플레이어는 각각 주사위 5개를 차례로 던진다. 이 문제에서 모든 주사위는 6면체이며 공정하고, 눈은 1부터 6까지라고 가정한다. 이후 이 문제와 무관한 베팅 라운드가 있다. 두 번째 라운드에서 첫 번째 플레이어는 현재 나온 주사위 중 0개에서 5개를 골라 다시 던진다. 주사위 5개는 모두 합쳐져 최종 패(hand)를 이룬다. 여기서 합친다는 것은 첫 라운드에서 던진 주사위를 포함해 5개 전부를 하나의 집합으로 본다는 뜻이며, 두 번째 라운드에서 다시 던지지 않은 주사위도 포함된다. 그다음 두 번째 플레이어가 첫 번째 플레이어의 최종 패를 확인한 뒤, 같은 방식으로 0개에서 5개의 주사위를 다시 던져 자신의 최종 패를 만든다. 두 패를 비교해 가중치가 높은 쪽이 이긴다.
실제 게임에서는 무승부인 경우 두 사람이 판돈을 나누지만, 이 문제는 A가 이길 확률만 묻고 있으므로 무승부는 A가 이기지 못한 것으로 본다(즉, B가 이긴다).
어느 패가 더 높은 가중치를 갖는지 정하기 위해 다음 족보를 고려한다. 족보는 가중치 내림차순으로 나열되며, 앞의 족보가 뒤의 족보를 이긴다.
족보:
- 파이브 카인드: 주사위 5개가 모두 같은 수. 예: 3, 3, 3, 3, 3
- 포 카인드: 주사위 4개가 같은 수. 예: 2, 2, 2, 2, 5
- 풀하우스(트리플 + 페어): 5개 중 3개가 같은 수이고, 나머지 2개가 같은 다른 수. 예: 4, 4, 4, 6, 6
- 스트레이트: 주사위 5개가 연속된 수. 예: 1, 2, 3, 4, 5(또는 2, 3, 4, 5, 6)
- 트리플: 주사위 3개가 같은 수. 예: 6, 6, 6, 2, 4
- 투 페어: 두 쌍이 있다. 예: 4, 4, 1, 1, 3
- 원 페어: 주사위 2개가 같은 수. 예: 3, 3, 1, 2, 4
- 노 페어: 예: 1, 2, 3, 4, 6
패에 해당하는 족보 중 가장 가중치가 높은 것을 쓴다. 예를 들어 파이브 카인드는 포 카인드이기도 하지만, 플레이어는 이를 자연스럽게 파이브 카인드라고 부른다. 또한 같은 족보 안에서는 가장 중요한 부분의 값이 큰 쪽이 가중치가 높다. 그 값도 같으면 다음으로 중요한 부분으로 비교하고, 이런 식으로 계속 비교한다. 예를 들어 포 카인드에서 가장 중요한 부분은 같은 수 4개이므로, 4, 4, 4, 4, 1이 3, 3, 3, 3, 6보다 낫다. 트리플에서는 같은 수 3개가 가장 중요한 부분이다. 하지만 투 페어에서는 중요도가 같은 쌍이 두 개 있으므로, 수가 더 큰 쌍을 먼저 비교해 승부를 가린다. 노 페어에서는 두 패의 가장 큰 수를 먼저 비교하고, 그다음으로 두 번째로 큰 수를 비교하며, 이후도 같은 방식으로 한다.
입력
첫 줄에는 이어질 테스트 케이스의 수 T(T는 10 이하)가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 첫 라운드 후 플레이어 A의 주사위 눈 5개가 공백으로 구분되어 주어진다. 두 번째 줄에는 플레이어 B의 주사위 눈 5개가 같은 형식으로 주어진다. 각 숫자는 1 이상 6 이하이다.
출력
각 테스트 케이스마다 A가 이길 확률을 한 줄에 하나의 숫자로 출력한다. 소수점 아래 6자리로 반올림한다(0.0000005는 0.000001, 0.0000004는 0.000000이 된다). 항상 소수점 아래 정확히 6자리로 출력한다.
힌트
A는 이미 가능한 최고의 패(모두 6)를 가지고 있으므로 다시 던지지 않는다. B는 이길 가능성이 없다. 다만 B는 모든 주사위를 6으로 만들어 무승부를 노려볼 수 있다. 따라서 B가 택할 수 있는 유일한 방법은 주사위 5개를 모두 다시 던지는 것이다. 가능한 결과의 수는 이고, 그중 무승부가 되는 경우는 1가지뿐이다. 그러므로 답은 이다.