일부 영어 억양에서는 "two for"를 빠르게 말하면 "two fer"처럼 들려요. Two-for-one은 하나를 사면 하나를 무료로 더 준다는 뜻을 나타내는 표현이에요. 그래서 "two-fer"라는 말은 흔히 하나를 사면 하나를 더 주는 혜택을 의미해요.
쿠키 두 개를 하나 가격으로 살 수 있는 휴일 특별 행사를 하는 빵집을 상상해 봐요 ("two-fer one!"). 이 혜택을 받아들이고, (아주 관대하게도) 남은 쿠키 하나를 줄에 서 있는 다른 사람에게 주기로 해요.
여분의 쿠키를 나눠 줄 때 무슨 말을 할지 정하는 것이 이번 과제예요.
그 사람의 이름을 안다면(예를 들어 이름이 Do-yun이라면) 이렇게 말해요:
One for Do-yun, one for me.
이름을 모른다면 대신 _you_라고 말해요.
One for you, one for me.
몇 가지 예를 볼까요?
| 이름 | 대화 |
|---|---|
| Alice | One for Alice, one for me. |
| Bohdan | One for Bohdan, one for me. |
| One for you, one for me. | |
| Zaphod | One for Zaphod, one for me. |
시작하기 전에, 테스트 케이스를 통과하는 코드를 어떻게 작성하는지 확실히 이해하고 있어야 해요. 더 자세한 내용은 이 [튜토리얼]을 확인해 봐요.
대부분의 Java 연습 문제에는 여러 개의 테스트 케이스가 들어 있어요. 이 케이스들은 테스트 주도 개발 (TDD)이라는 유용한 과정을 뒷받침하도록 구성되어 있어요. TDD는 복잡한 기능을 한 번에 만드는 대신 하나씩 쌓아 올리도록 도와주는, 체계적인 주기를 반복하는 방법이에요. 그 주기는 다음과 같아요:
이 트랙의 테스트 파일에는, 풀이가 올바르다고 인정받기 위해 통과해야 하는 모든 테스트가 들어 있어요. 그런데 이는 테스트를 하나씩 작성하는, 위에서 설명한 주기와는 곧바로 맞아떨어지는 것처럼 보이지 않아요. 하지만 테스트를 작성할 때 사용하는 도구인 JUnit은 이미 작성된 테스트를 일시적으로 건너뛸 수 있게 해주는 @Disabled 애너테이션을 제공해요. 이 애너테이션을 이용하면, 전달하는 테스트 파일이 다음 규칙을 만족하도록 만들 수 있어요:
이 덕분에 다음과 같이 살짝 수정된 단계를 따라가면서 TDD 주기를 직접 경험해 볼 수 있어요:
@Disabled 애너테이션을 지워요.Exercism에 가입하고 Java 트랙을 개념 26개연습 문제 158개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.