Link: Lv2. 124 나라의 숫자
- 문제 설명
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
124 나라에는 자연수만 존재합니다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
10진법 124 나라 10진법 124 나라
1 1 6 14
2 2 7 21
3 4 8 22
4 11 9 24
5 12 10 41
자연수 n이 매개변수로 주어질 때,
n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.
- 문제 풀이
간단한 문제다. 1 2 4 는 3번을 주기로 돌아가므로 n을 3으로 나눠가며
몫은 다시 n에 저장하고 n을 나눈 나머지는 string에 붙여가면 된다.
3으로 나눈 나머지는 0, 1, 2 가 나오므로 1, 2 는 그대로 붙이면 되며 0이 나올때만 4를 string에 붙이면 된다.
단 이때는 n을 갱신 할 때 3을 나눈 몫에다가 1 을 빼주어야 한다.
n | result |
---|---|
1 | 1 |
2 | 2 |
3 | 4 |
4 | 11 |
이유는 n이 3일 때 보면 된다. n이 3이면 나눈 나머지는 0이 되고 몫은 1이된다.
만약 나눈 나머지가 0일 때 4를 이어 붙인 후 1을 빼지 않으면 몫은 1이 갱신되며
결국 값은 14가 되고 말 것이다. n이 3일 때는 4가 답이다.
Source Code: figure_of_124_country.cpp
10일때 41값이 노출되어야 한다면서
나눈 몫은 3이고, 나머지는 1입니다.
그럼 41이아니라 31인데 해석을 정말 혼자서 하셨나봅니다.
먼저 문제 풀이가 마음에 들지 않으시면 그냥 지나가시면 됩니다. 비꼬듯이 말씀하지 말아 주세요. 말씀하신 예시에서 보면, 10을 3으로 나누면 몫이 3이고 나머지는 1 맞습니다. 따라서 1을 answer 에 붙이고 몫인 3은 다시 n에 집어 넣습니다. 그리고 3인 n을 다시 3으로 나누면 나머지가 0이 되게 되며 문제 풀이에 따라 4를 앞에 붙이면 “41”이 됩니다.