기기

[프로그래머스] 이름 124 나라의 숫자 ( java ) 본문

CS/알고리즘 풀이

[프로그래머스] 이름 124 나라의 숫자 ( java )

notEmpty 2019. 12. 15. 15:50

[프로그래머스] 이름 124 나라의 숫자 ( 자바 )

 

10진법을 특이한? 3진법으로 바꾸는 문제

 

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/12899

 

코딩테스트 연습 - 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

programmers.co.kr

 

 

핵심 

10 진법을 3가지 숫자로만 표현되는 수로 바꾼다. 그래서 10진법에서 3진법으로 바꾸는 과정을 이용한다. 

 

10진법

1

2

3

4

5

6

7

8

3진법

1

2

10

11

12

20

21

22

124숫자

1

2

4

11

12

14

21

22

3배수 이외는 별 문제가 안 된다.

하지만, 3으로 나누어 떨어질 때는 0이 4로 대체되어야한다. 그리고 n은 n/3처리 후 추가로 1을 감소시켜줘야 한다. 그렇지 않으면, 3진법 처럼 자리수가 건너띄게 된다.  이 부분이 3진법 특성으로 생긴 규칙?

 

 

 

 

추가적으로 더 궁금한 점 있으면 댓글 달아주세요

 

 

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
  public String solution(int n) {
      String ans = "";
      
      while(n!=0){
          if(n%3==0){
              ans = '4' + ans;
              n = n/3-1;
          }else{
              ans = n%3 + ans;
              n /= 3;
          }
      }
 
      return ans;
  }
}
cs