밀알

밀알

쉬움

소개

옛날에 한 왕자의 목숨을 구한 지혜로운 신하가 있었어요. 왕은 신하가 원하는 것이 무엇이든 주겠다고 약속했어요. 왕이 체스를 좋아한다는 것을 알고, 신하는 밀알을 갖고 싶다고 왕에게 말했어요. 체스판의 첫 번째 칸에는 한 알, 그다음 칸부터는 알의 수를 두 배씩 늘려서요.

지침

체스판에 놓인 밀알의 개수를 계산해요.

체스판은 64개의 칸으로 이루어져 있어요. 1번 칸에는 밀알이 한 개, 2번 칸에는 두 개, 3번 칸에는 네 개가 놓이고, 그다음부터는 칸마다 두 배씩 늘어나요.

다음을 계산하는 코드를 작성해 봐요:

  • 주어진 칸에 있는 밀알의 개수
  • 체스판 전체에 있는 밀알의 총 개수

참고

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

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

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

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

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