볼링

볼링

어려움

지침

볼링 게임의 점수를 계산해요.

볼링은 무거운 공을 굴려 삼각형으로 세워진 핀을 쓰러뜨리는 게임이에요. 볼링 게임의 점수를 기록하는 코드를 작성해요.

볼링 점수 계산

게임은 10개의 프레임으로 이루어져 있어요. 프레임은 처음에 핀 10개가 세워진 상태에서 한 번 또는 두 번 공을 던지는 것으로 이루어져 있어요. 프레임의 점수를 계산하는 데는 세 가지 경우가 있어요.

  • 오픈 프레임은 해당 프레임에서 10점 미만의 점수가 기록되는 경우예요. 이때 프레임의 점수는 쓰러뜨린 핀의 개수예요.

  • 스페어는 두 번째 투구로 핀 10개를 모두 쓰러뜨리는 경우예요. 스페어의 총점은 10에 다음 투구에서 쓰러뜨린 핀의 개수를 더한 값이에요.

  • 스트라이크는 첫 번째 투구로 핀 10개를 모두 쓰러뜨리는 경우예요. 스트라이크의 총점은 10에 다음 두 번의 투구에서 쓰러뜨린 핀의 개수를 더한 값이에요. 스트라이크 바로 뒤에 두 번째 스트라이크가 나오면, 공을 한 번 더 던질 때까지 첫 번째 스트라이크의 점수를 정할 수 없어요.

다음은 세 프레임 예시예요.

프레임 1 프레임 2 프레임 3
X (스트라이크) 5/ (스페어) 9 0 (오픈 프레임)

프레임 1은 (10 + 5 + 5) = 20이에요.

프레임 2는 (5 + 5 + 9) = 19예요.

프레임 3은 (9 + 0) = 9예요.

따라서 현재 누적 총점은 48이에요.

게임의 10번째 프레임은 특별한 경우예요. 스페어나 스트라이크를 던지면 각각 한 번 또는 두 번의 추가 투구를 하게 돼요. 추가 투구는 10번째 프레임의 총점을 계산하기 위해 있어요. 추가 투구에서 스트라이크나 스페어를 기록해도 추가 투구를 더 받지는 않아요. 10번째 프레임의 총점은 쓰러뜨린 핀의 총개수예요.

10번째 프레임이 X1/(스트라이크와 스페어)라면 총점은 20이에요.

10번째 프레임이 XXX(세 번의 스트라이크)라면 총점은 30이에요.

요구 사항

볼링 게임의 점수를 기록하는 코드를 작성해요. 코드는 다음 두 가지 연산을 지원해야 해요.

  • roll(pins : int)는 플레이어가 공을 굴릴 때마다 호출돼요. 인자는 쓰러뜨린 핀의 개수예요.
  • score() : int는 게임이 완전히 끝났을 때만 호출돼요. 해당 게임의 총점을 반환해요.
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Unison Exercism

볼링 문제를 시작해 볼 준비가 됐나요?

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