밀알

밀알

쉬움

지침

체스판의 각 칸에 있는 밀알 수가 두 배씩 늘어난다고 할 때, 체스판 위의 밀알 수를 계산해요.

옛날에 왕자의 목숨을 구한 현명한 신하가 있었어요. 왕은 신하가 원하는 것은 무엇이든 주겠다고 약속했죠. 왕이 체스를 좋아한다는 걸 알고 있던 신하는 왕에게 밀알을 받고 싶다고 말했어요. 체스판의 첫 번째 칸에는 밀알 한 개를 놓고, 그다음 칸마다 밀알 수를 두 배로 늘리는 방식이었어요.

체스판에는 64개의 칸이 있어요. (1번 칸에는 밀알이 1개, 2번 칸에는 2개, 이런 식으로요.)

다음을 보여 주는 코드를 작성해 봐요:

  • 특정 칸에 밀알이 몇 개 있었는지, 그리고
  • 체스판 전체에 있는 밀알의 총 개수

참고

이런 종류의 문제(답이 이전 답에 의존하는 문제)를 흔히 재귀라고 불러요. 재귀를 구현하는 방법은 여러 가지가 있으니, 이 개념이 익숙하지 않다면 한번 찾아보는 것도 좋아요. Pharo는 재귀에 잘 최적화되어 있고, 자주 쓰이는 패턴이기도 해요.

참고: 원래 문제 명세에서는 grainsCalculator를 #square로 호출하지만, 여기서는 이 메서드의 이름을 #atSquare:로 바꿨어요. 이 이름이 더 Smalltalk스럽고, "정사각형에서" 답을 구한다는 의미를 더 잘 드러내요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Pharo Exercism

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

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