알고리즘/문제풀이 - 프로그래머스
[프로그래머스] 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();
}
}