문제 : 124 나라의 숫자
분석
10 진법 | 숫자나라 진법 | 10 진법 | 숫자나라 진법 |
4 | 11 | 19 | 141 |
5 | 12 | 20 | 142 |
6 | 14 | 21 | 144 |
숫자나라의 진법이 기본적으로 3진법을 따라가는 것을 알 수 있다.
따라서 맨 뒷자리인 1, 2, 4 는 각각 주어진 숫자를 3으로 나눈 나머지 1, 2, 0에 해당되는 것을 구할 수 있다.
또한 3개씩 끊어 생각할 때, 맨 뒷자리를 제외한 앞자리는 동일한 것을 알 수 있다.
19, 20, 21로 예를 들면 각기 맨 뒷자리는 나머지인 1, 2, 0에 해당하는 1, 2, 4이고, 앞자리는 14로 동일하다.
여기서 14는 10진법으로 6인데 6이 나온 순서는 다음과 같다.
3개씩 끊어 생각할 때, 그 중 3의 배수에서 3을 뺀 값을 3으로 나눈 값이다.
(3으로 나눈 이유는 자릿수가 올라가기 때문)
ex) 19, 20, 21인 경우 21-3 = 18, 18 / 3 = 6
위 방법을 반복하면 정답을 구할 수 있다.
구현
string solution(int n) {
string answer = "";
while (n > 0)
{
int ret = n % 3;
if (ret == 0)
{
answer = "4" + answer;
n -= 3;
}
else
{
answer = to_string(ret) + answer;
n -= ret;
}
n /= 3;
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] - 주식 가격 (0) | 2021.01.16 |
---|---|
[프로그래머스 C++] - 기능 개발 (0) | 2021.01.15 |
[프로그래머스 C++] - 다리를 지나는 트럭 (0) | 2021.01.14 |
[프로그래머스 C++] - 멀쩡한 사각형 (0) | 2021.01.13 |
[프로그래머스 C++] - 스킬트리 (0) | 2021.01.12 |