본문 바로가기
알고리즘/코딩 - 프로그래머스

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

by 주남2 2019. 7. 12.
반응형

문제 설명

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 함수를 완성해 주세요.

 

제한사항

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

설명

간단해보이고 실제로 코드도 간단하지만 푸는데는 생각보다 오래걸렸다.. 처음엔 일반적으로 3진수로 만들어서 3을 4로 바꿔주면 되지 않을까 생각했는데, 3진수에는 0이 있어 문제가 생겼다. 예를 들어 3진수에서 3은 10이지만 124 나라에서는 3은 4이다. 이 문제를 어떻게 해결할가 하다가 3으로 나누어지면 n/3 -1 로 바꿔주고 4를 더해주는 방법을 찾았다. ( 검색해서 찾았다..휴) 

String을 더해주는 방식을 사용해서 StringBuilder을 사용하고 순서대로 더하면 마지막에 순서를 바꿔줘야하므로 reverse() 메소드를 사용했다.

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.*;
 
class Solution {
      public String solution(int n) {
          StringBuilder sb = new StringBuilder();
          int a = 0;
          String[] nara = {"4","1","2"};
          
          while(n!=0) {
              a = n%3;
              if(a==0) {
                  sb.append("4");
                  n = n/3 -1;
              } else {
                  n = n/3;
                  sb.append(nara[a]);
              }
          }
          
          return sb.reverse().toString();
      }
    }
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 
반응형