프로그래머스 | 124 나라의 숫자 (Java)

mul·2023년 7월 3일
0

코딩테스트연습

목록 보기
43/56

🔒 문제

프로그래머스 연습문제 Lv2. 124 나라의 숫자

🔑 해결

자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return하는 solution 함수를 작성하는 문제이다.

  1. 생성자를 사용하여 50,000,000 이하의 자연수를 124 나라에서 사용하는 숫자로 변환하였을 때 자릿수가 늘어나는 숫자를 arr배열에 저장 👉🏻 인덱스 값을 i라고 했을 때, (i + 1) = (arr[i] 값을 124 나라에서 사용하는 숫자로 변환한 값의 자릿수)이다.
  2. solution함수를 사용하여 매개변수 n을 받았다면, for문을 사용하여 idx 값(n을 124 나라 숫자로 변환했을 때 자릿수 - 1)을 찾기
  3. 124 나라 숫자로 변환했을 때의 자릿수만큼 for문을 돌면서 규칙에 따라 변환
    3-1. 변수 nm을 n을 3으로 나눈 나머지라 했을 때, nm이 1이면 char '1'을 StringBuilder sb의 0번째 자리에 insert, n을 3으로 나누기
    3-2. nm이 2이면 '2'를 insert, n을 3으로 나누기
    3-3. nm이 3이면 '4'를 insert, n을 3으로 나눈 뒤 -1
  4. 변환되어 sb에 저장된 값을 string으로 바꾸어 return

🔓 코드

class Solution {
    int arr[];
    
    public Solution() {
        arr = new int[16];
        arr[0] = 1;
		int three = 1;
		for (int i = 1; i < arr.length; i++) {
			three *= 3;
			arr[i] = arr[i-1] + three;
		}	
    }
    
    public String solution(int n) {
        String answer = "";
        StringBuilder sb = new StringBuilder();
        
        int idx = arr.length-1;
        for (; idx > 0 && arr[idx] > n; idx--) {
		}
        
        for (int i = idx; i > -1; i--) {
        	int nm = n % 3;
        	if (nm == 1) {
        		sb.insert(0, '1');
        		n = n / 3;
        	} else if (nm == 2) {
        		sb.insert(0, '2');
        		n = n / 3;
        	} else if (nm == 0) {
        		sb.insert(0, '4');
        		n = n / 3;
        		n--;
        	}
		}
        
        answer = sb.toString();
        
        return answer;
    }
}

0개의 댓글