볼링

볼링

보통

지침

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

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

볼링 점수 계산

게임은 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에서 편집 링크가 새 창이나 탭에서 열려요
Roc Exercism

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

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