본문 바로가기

개발지/코테

[프로그래머스] 코테연습 - 124 나라의 숫자(lv.2)

- 내 방법 풀이

  • 10진수를 3진수로 바꾸되 표현을 (1, 2, 4) 숫자로만 표현하면 되는 문제였다.
  • 10진수를 N진법으로 바꿀 때, 숫자를 N으로 나눈 나머지를 순서대로 읽으면 되므로, 문제에서 주어진 n을 3으로 나눈 나머지에 따라 answer에 차례대로 더해주는 switch문을 사용했다.
  • 10진수를 다만 3진법 전환할 때 이전 계산에서 나누어 떨어졌다면 n--;를 실행시켜준다. ( n이 나누어 떨어졌을 때, 그  다음 몫에서 1의 자리를 당겨주기 위해서.)
class Solution {
    public String solution(int n) {
        String answer = "";

        while (n > 0) {
            int temp = n % 3;
            n /= 3;

            switch (temp) {
                case 0: answer = 4 + answer;
                        n--;
                        break;
                case 1: answer = 1 + answer;
                        break;
                case 2: answer = 2 + answer;
                        break;
            }
        }
        return answer;
    }
}

 

- 다른 사람 방법 풀이

  • 배열을 이용하여, 나머지에 따라 answer에 추가해주도록 코드를 구성함.
class Solution {
    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;
  }