알고리즘/문제풀이 - 프로그래머스

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

나규태 2021. 9. 29. 01:10
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12899
레벨 : Level 2
분류 : 연습문제
 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

이 문제는 3진법을 변형한 문제이다.

1, 2, 4가 들어 있는 배열을 만들어 n의 나머지를 인덱스로 활용해 값을 만드려고 했다.

하지만 그 방법으로는 n을 배열의 길이로 나누어 나머지를 구했을 때 0이 아닌 4가 나와야 돼서 배열의 순서를 4, 1, 2로 변경하였다.

일의 자리는 n을 배열의 길이로 나누어 나머지를 구하면 쉽게 구할 수 있었으나 십의 자리 이상부터는 구현하지 못해 다른 사람의 풀이를 보았다.

풀이의 핵심은 n = (n - 1) / 3이였다.

3으로 나눌 때 한 칸씩 당겨져서 다음 자리의 수를 구할 수 있다.

 

아래와 같이 소스를 공유합니다.

class Solution {
    public String solution(int n) {
        StringBuilder sb = new StringBuilder();
        int[] notation = {4, 1, 2};
        
        while(n > 0) {
            sb.append(notation[n % 3]);
            n = (n - 1) / 3;
        }
        
        return sb.reverse().toString();
    }
}