알고리즘/JAVA

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

야아옹 2020. 10. 22. 18:00

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

  1. 124 나라에는 자연수만 존재합니다.
  2. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.

풀이 : 3진법과 비슷해서 공책에 계속 3으로 나누기만 하다가 코딩으로 옮겼더니 디버깅 하다가 맞춰진 경우가 됬다..

        일단 10진법 수 를 3으로 나눈 나머지가 124 나라의 일의 자리가 된다 ( 나머지가 0 일 시 4로 변경)

        그후 일전에 3으로 나눈 몫을 3으로 나눈 나머지를 구해 나아간다. 

        ex) 8  = 몫 : 2, 나머지 : 2 -> 2 몫 : 0, 나머지 : 2 ->22 

        3으로나눈 나머지가 0인 배수들은 나누고 몫에 -1 을 진행

        ex) 9  = 몫 : 3, 나머지 : 0 (4)-> (9 / 3 - 1)2 몫 : 0, 나머지 : 2 ->42 

 

package com.company;

public class Countryof124
{
    public static void main(String[] args)
    {
        System.out.println(solution(11));
    }
    public static String solution(int n)
    {
        StringBuffer answer = new StringBuffer();
        while (n > 0)
        {
            int remain = n % 3;
            if (remain == 0)
            {
                answer.append(4);
                n = n / 3 - 1;
            }
            else
            {
                answer.append(remain);
                n = n / 3;
            }
        }
        return answer.reverse().toString();
    }
}

  

 

String 을 그냥 이어 붙이는 += 보다 StringBuffer 를 사용하여 붙이는게 빠르다!