해설
블랙잭 여부는 초기 두 장만으로 결정된다. 양쪽 중 적어도 한쪽이 블랙잭이면 규칙에 따라 즉시 , , 중 하나가 답이다.
이후 일반 게임에서는 보상을 로 나누어 승리 , 무승부 , 패배 로 정규화한다. 마지막에 얻은 기댓값에 을 곱하면 된다.
현재 덱의 장에 의 번호를 붙인다. jtw7913가 추가로 받은 카드 집합을 비트마스크 , 딜러가 추가로 받은 카드 집합을 비트마스크 라 하자. jtw7913의 차례에는 이고, jtw7913가 Stay한 뒤에는 가 고정된 채 만 증가한다.
각 카드는 아직 덱에 남아 있거나, jtw7913가 받았거나, 딜러가 받은 세 상태 중 하나이다. 따라서 가능한 상태 수는 최대 이다.
모든 비트마스크 에 대해 다음 점수를 전처리한다.
- : jtw7913의 초기 두 장과 의 카드를 합친 점수.
- : 딜러의 초기 두 장과 의 카드를 합친 점수.
에이스를 모두 1점으로 계산한 합을 라 하자. 에이스가 하나 이상 있고 이면 에이스 하나를 11점으로 바꾸어 을 사용한다. 그렇지 않으면 를 사용한다.
를 jtw7913가 이미 Stay했고 추가 카드 집합이 , 딜러의 추가 카드 집합이 일 때 이후 결과의 정규화된 기댓값이라 하자. 딜러 점수가 21을 초과하면 이다. 딜러 점수가 17 이상이거나 덱이 비었다면 두 사람의 점수를 비교하여 중 하나를 반환한다.
그 외에는 딜러가 반드시 Hit한다. 남은 카드 집합을 라 하면
메모이제이션 인덱스는 각 카드의 상태를 3진수 한 자리로 표현하여 만들 수 있다. 카드 가 덱에 남아 있으면 0, 에 있으면 1, 에 있으면 2를 사용한다. 이렇게 하면 길이 의 배열 하나로 모든 딜러 상태를 저장할 수 있다.
이제 를 jtw7913가 추가 카드 집합 를 가진 상태에서 최적으로 행동할 때의 최대 정규화 기댓값이라 하자. 지금 Stay하는 값은
이다.
현재 점수가 21이거나 덱이 비었다면 자동으로 Stay하므로 이다. 그렇지 않으면 Hit도 선택할 수 있다. 남은 카드 집합을 라 할 때
여기서 카드 를 뽑고 버스트하면 , 그렇지 않으면 이다. 따라서
일반 게임의 답은 이다.
점수 전처리는 이고, 딜러 상태는 최대 개이며 각 상태에서 최대 장을 순회한다. 따라서 시간 복잡도는 , 공간 복잡도는 이다.
Solution written by GPT5.6