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

Paek·2023년 8월 10일
0

코테공부 자바

목록 보기
11/25
post-thumbnail

출처

https://school.programmers.co.kr/learn/courses/30/lessons/12899

문제


124 나라의 진법을 이용해 진법변환을 하는 문제입니다.

풀이

1, 2, 4 세가지의 숫자만 가지고 있는 규칙은 0, 1, 2의 숫자로 표기하는 3진법과 유사한 형태를 가집니다. 이를 토대로 규칙을 유추해 보자면

  • 1 % 3 = 1 (124나라: 1)
  • 2 % 3 = 2 (124나라: 2)
  • 3 % 3 = 0 (124나라: 4)

이 나라의 진법을 나머지 기준으로 담을 배열 {"4", "1", "2"}을 만들어줍니다.

여기서 특이한 점을 하나 발견할 수 있었는데, 6 % 3의 경우입니다.5를 예로 들자면
n % 3 = 2, n /= 3 = 1이 되어 "1"+"2" 인데 6의 경우 "2" + "0"이 아닌 "14"의 형식으로 나타난다는 점이였습니다.

이 경우를 해결하기 위해 n/=3 에 -1을 해준다면

  • n %= 0 -> "4"
  • n /= 2 -> 다음 단계 몫에서 "2"가 되게 하는게 아닌 n에 -1을 빼 n = n/2 - 1을 저장 -> "1"

결론적으로 3으로 나누어 떨어지는 경우 몫에 -1을 해주어야 합니다. 나머지 부분은 코드를 보면 이해하실 수 있습니다.

코드

class Solution {
    public String solution(int n) {
        String answer = "";
        String[] arr = {"4", "1", "2"};
        while(n > 0) {
            int tmp = n % 3;
            n /= 3;
            if(tmp == 0) {
                n--;
            }
            answer = arr[tmp] + answer;
        }

        return answer;
    }
}
profile
티스토리로 이전했습니다. https://100cblog.tistory.com/

0개의 댓글