Link : 12899
1. 문제
- 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
124 나라에는 자연수만 존재합니다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
1 1 6 14 2 2 7 21 3 4 8 22 4 11 9 24 5 12 10 41
2. 문제의 조건
- 1 <= n <= 500,000,000
더보기
3. 문제 접근
- 시간 복잡도
숫자의 범위가 5억으로 봐선 O(N)의 시간에도 절대로 풀 수 없는 문제입니다.
- 아이디어
124 나라의 숫자는 기본적으로 3진법을 따릅니다. 하지만 0 1 2 10 11 12 순으로 나아가는 것을보면 3일땐 4여야하는데 14가 나오는 어이없는 경우가 발생하게됩니다.
즉, n % 3이 0이 될 때마다 1칸씩 넘어서는 오차가 발생하게 됩니다. 이 1칸씩을 빼주시면 됩니다.
4. 풀이 방법
- n이 0이 될때까지 while를 돌립니다.
- 3진법 방식을 응용하여 n % 3이 나오는 값을 1,2,4 나라의 숫자에 대입시켜 str로 넣어줍니다.
- 이때 n % 3이 0이 되면 오차가 발생하므로 n % 3일 때 마다 n에서 추가로 1을 빼줍니다.
5. 소스코드
cjw.git@gmail.com
'알고리즘 > programmers' 카테고리의 다른 글
42746: 가장 큰 수[정렬] (0) | 2021.01.11 |
---|---|
60057: 문자열 압축 (0) | 2021.01.11 |
42587: 프린터[스택/큐] (0) | 2021.01.09 |
12953: N개의 최소공배수 (0) | 2021.01.06 |
68645: 삼각 달팽이 (0) | 2021.01.06 |
댓글