본문 바로가기
알고리즘/programmers

12899: 124 나라의 숫자

by cjw.git 2021. 1. 11.

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
    자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.

 


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

댓글