블랙잭

블랙잭

학습 연습 문제

소개

다른 언어들처럼 Go도 switch문을 제공해요. switch문은 긴 if ... else if문을 더 짧게 쓸 수 있는 방법이에요. switch문을 만들려면 먼저 switch 키워드를 쓰고 그 뒤에 값이나 식을 적어요. 그다음에는 각 조건을 case 키워드로 선언해요. 앞의 case 조건 중 어디에도 해당하지 않을 때 실행되는 default 케이스도 선언할 수 있어요.

operatingSystem := "windows"

switch operatingSystem {
case "windows":
    // do something if the operating system is windows
case "linux":
    // do something if the operating system is linux
case "macos":
    // do something if the operating system is macos
default:
    // do something if the operating system is none of the above
} 

switch문에서 흥미로운 점은 switch 키워드 뒤의 값을 생략할 수 있고, 각 case마다 불리언 조건을 쓸 수 있다는 거예요.

age := 21

switch {
case age > 20 && age < 30:
    // do something if age is between 20 and 30
case age == 10:
    // do something if age is equal to 10
default:
    // do something else for every other case
}

지침

이번 연습 문제에서는 블랙잭 게임의 첫 턴을 시뮬레이션해요.

두 장의 카드를 받고, 딜러의 앞면 카드를 볼 수 있어요. 모든 카드는 "ace", "king", "three", "two" 등과 같은 문자열로 표현해요. 각 카드의 값은 다음과 같아요:

카드 값 카드 값
ace 11 eight 8
two 2 nine 9
three 3 ten 10
four 4 jack 10
five 5 queen 10
six 6 king 10
seven 7 기타 0

참고: 일반적으로 ace는 1 또는 11의 값을 가질 수 있지만, 단순화를 위해 여기서는 11의 값만 가진다고 가정해요.

두 장의 카드와 딜러의 카드에 따라, 게임의 첫 턴에 대한 전략이 있는데, 다음과 같은 선택지가 있어요:

  • 스탠드 (S)
  • 히트 (H)
  • 스플릿 (P)
  • 자동 승리 (W)

아직 최적은 아니지만, 친구 Alex가 개발해 온 전략을 따라요. 그 전략은 다음과 같아요:

  • ace 두 장이 있다면 항상 스플릿해야 해요.
  • 블랙잭(합이 21이 되는 두 장의 카드)이고, 딜러가 ace, 그림 카드(Jack/Queen/King), 또는 ten을 가지고 있지 않다면 자동으로 이겨요. 딜러가 그런 카드 중 하나라도 가지고 있다면 스탠드하고, 다른 카드가 공개되기를 기다려야 해요.
  • 카드의 합이 [17, 20] 범위에 있으면 항상 스탠드해야 해요.
  • 카드의 합이 [12, 16] 범위에 있으면 항상 스탠드해야 해요. 단, 딜러가 7 이상을 가지고 있다면 항상 히트해야 해요.
  • 카드의 합이 11 이하라면 항상 히트해야 해요.

1. 주어진 카드의 값 계산하기

카드의 숫자 값을 계산하는 함수를 구현해 봐요:

value := ParseCard("ace")
fmt.Println(value)
// Output: 11

2. 첫 턴의 결정 로직 구현하기

위에서 설명한 결정 로직을 구현하는 함수를 작성해 봐요:

func FirstTurn(card1, card2, dealerCard string) string

다음은 예상 결과의 몇 가지 예시예요:

FirstTurn("ace", "ace", "jack") == "P"
FirstTurn("ace", "king", "ace") == "S"
FirstTurn("five", "queen", "ace") == "H"
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Go Exercism

블랙잭 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Go 트랙을 개념 35개연습 문제 167개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.