콘텐츠로 건너뛰기
Home » 포커 게임 판정

포커 게임 판정

오일러 프로젝트 54

포커라는 카드 게임은 다섯 장으로 된 패의 높고 낮음에 따라 승부를 냅니다. (포커 규칙을 이미 아는 분이라면 규칙 설명 부분은 건너 뛰셔도 좋습니다.) 카드 한 장은 아래와 같은 순서대로 값이 높아집니다.

2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A

다섯장으로 이루어진 패의 계급은 낮은 것부터 높은 순서로 다음과 같습니다.

  • High Card : 가장 높은 카드의 값 비교
  • One Pair : 한 쌍이 같은 카드
  • Two Pairs: 서로 다른 두 쌍이 같은 카드
  • Three of a Kind: 세 장이 같은 카드
  • Straight : 모든 카드가 연속된 숫자 (Q, K, A, 2, 3 은 스트레이트가 아닙니다)
  • Flush : 모든 카드의 무늬가 같음
  • Full House : 세장이 같고, 또 한쌍이 같음
  • Four of a Kind : 네 장이 같은 카드
  • Royal Flush : 10, J, Q, K, A 가 무늬도 같음 (Royal Straight Flush가 아니냐고 하겠지만, Royal Straight라는 것은 없습니다.)

두 사람의 패가 같은 종류의 계급이라면, 계급을 구성하는 카드 중 높은 쪽을 쥔 사람이 이깁니다. 예를 들면 8 원페어는 5 원페어를 이깁니다. (풀하우스의 경우 Three of a Kind의 숫자를 먼저 비교하고, 원 페어의 숫자를 다시 비교) 계급을 이루는 카드 숫자까지 같으면 (둘 다 Q 원페어인 경우 등) 다른 카드를 높은 순서대로 비교해서 승부를 정합니다.

텍스트 파일 poker.txt에는 두 선수가 벌인 1,000회의 승부가 저장되어 있습니다. 한 줄에는 10장의 카드가 공백으로 분리되어 있는데, 앞의 다섯장은 1번 선수의 것이고 뒤의 다섯장은 2번 선수의 패입니다. 잘못되거나 중복된 데이터는 없으며, 무승부도 없습니다.

카드 숫자는 2, 3, …, 9, T, J, Q, K, A 로(숫자 10은 T로 표시), 무늬는 C, D, H, S로 표시되어 있습니다. 예를 들면 3C 3D 3S 9S 9D의 경우 3 풀하우스가 됩니다.

이 데이터를 분석하고 1번 선수가 이긴 횟수를 구하세요.

https://euler.synap.co.kr?problem=54
더 보기 »오일러 프로젝트 54