본문 바로가기
카테고리 없음

[프로그래머스] 124 나라의 숫자

by yeaseul912 2022. 4. 30.
728x90

1.  문제 설명

더보기

124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

  1. 124 나라에는 자연수만 존재합니다.
  2. 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 함수를 완성해 주세요.

2. 제한사항

더보기
  • n은 500,000,000이하의 자연수 입니다.

3. 입출력예

 

n result n result
1 1 18 124
2 2 32 412
3 4 39 444
4 11 59 1412

4. 풀이

Solution 1 ( 성공 ) 
public String solution(int n) {
    String answer = "";
    String v = "";
    while(n>0){

        if(n%3 == 0){
            answer = "4" + answer;
            n=n/3 -1;
        }else{
            v = Integer.toString( n % 3 );
            answer = v + answer;
            n=n/3;
        }
    }

    return answer;
}
Solution 2 ( 누군가의 멋진 코드 )
public String solution(int n) {
  String[] num = {"4","1","2"};
  String answer = "";

  while(n > 0){
      answer = num[n % 3] + answer;
      n = (n - 1) / 3;
  }
  return answer;
}

5. 풀이 설명

Point. 3의 배수일 경우에 자리수가 증가하는게 아니기 때문에 3으로 나누어 떨어지는 경우( n%3 == 0 ) 에는 빼기 1을 해주어야 한다. 

           맨 앞자리에 원래 0이 오지 않는데 124나라에서는 1(0) 이 올 수 있어서 그런것 같다 @.@

           만약에 1이 오지 못했다면 맨 아래(124나라+기본3진법)처럼 수 체계가 됬을것이다.

10진법 1 2 3 4 5 6 7 8 9 10 11 12 13 14
기본적인
3진법
0 1 2 10 11 12 20 21 22 100 101 102 110 111
124나라
 3진법
1 2 4 11 12 14 21 22 24 41 42 44 111 112
124나라+
기본3진법
1 2 4 21 22 24 41 42 44 211 212 214 221 222

6. 결과 

Solution 1

Solution 2

결과까지 완벽한 코드.. 지려따

7. 마치며.

이 문제를 풀어보겠다고 반나절은 붙잡고 있었던것 같다.. 나누고 곱하고 int했다가 double했다가 쌩쑈를했는데 0으로 나누어 떨어질때가 항상 안풀렸었다. 자릿수 때문이었다니.. 1을 빼줬어야 했다니.. 흑. 다음부터는 미련하게 붙잡고 있지 말고 빠르게 풀고 빠르게 습득해버려야겠다.

반응형

댓글