1. λ¬Έμ œμ„€λͺ…

124 λ‚˜λΌκ°€ μžˆμŠ΅λ‹ˆλ‹€. 124 λ‚˜λΌμ—μ„œλŠ” 10진법이 μ•„λ‹Œ λ‹€μŒκ³Ό 같은 μžμ‹ λ“€λ§Œμ˜ κ·œμΉ™μœΌλ‘œ 수λ₯Ό ν‘œν˜„ν•©λ‹ˆλ‹€.

  1. 124 λ‚˜λΌμ—λŠ” μžμ—°μˆ˜λ§Œ μ‘΄μž¬ν•©λ‹ˆλ‹€.
  2. 124 λ‚˜λΌμ—λŠ” λͺ¨λ“  수λ₯Ό ν‘œν˜„ν•  λ•Œ 1, 2, 4만 μ‚¬μš©ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄μ„œ 124 λ‚˜λΌμ—μ„œ μ‚¬μš©ν•˜λŠ” μˆ«μžλŠ” λ‹€μŒκ³Ό 같이 λ³€ν™˜λ©λ‹ˆλ‹€.

10진법 124 λ‚˜λΌ 10진법 1 124 λ‚˜λΌ 1
1 1 6 14
2 2 7 21
3 4 8 22
4 11 9 24
5 12 10 41

μžμ—°μˆ˜ n이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, n을 124 λ‚˜λΌμ—μ„œ μ‚¬μš©ν•˜λŠ” 숫자둜 λ°”κΎΌ 값을 return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄ μ£Όμ„Έμš”.

μ œν•œμ‚¬ν•­

μž…μΆœλ ₯ 예

n result
1 1
2 2
3 4
4 11

2. λ¬Έμ œλΆ„μ„(사전)

Stack<String> tempNum = new Stack<>();

3. JAVAμ½”λ“œ

import java.util.Stack;

public class Solution {

    // ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ LEVEL2 124 λ‚˜λΌμ˜ 숫자
    // 문제 URL : <https://programmers.co.kr/learn/courses/30/lessons/12899>

	public String solution(int n) {
	    String answer = "";
	    StringBuffer sb = new StringBuffer(); // 정닡을 λ‹΄λŠ” λ³€μˆ˜
	    // 1,2,4λ‚˜λΌμ˜ λ³€ν™˜ν•œ 숫자λ₯Ό λ‹΄λŠ” Stack λ³€μˆ˜
	    Stack<String> tempNum = new Stack<>();
	    int inputNum = n;
	    while (inputNum > 0) {
	        // μ „λ°˜μ μΈ 방법은 3진법 κ΅¬ν•˜λŠ” 방법과 λΉ„μŠ·ν•˜κ²Œ 처리
	        // 0이 λ‚˜μ˜¬ κ²½μš°μ—λ§Œ 4κ°€ λ‚˜μ˜€λ„λ‘ μ„€μ •
	        int chkMod = inputNum % 3;
	        if (chkMod == 0) {
	            tempNum.add(String.valueOf(4));
	            inputNum = (inputNum / 3) - 1;
	            /*
	            EX) 1) 숫자 3
	                   3 % 3 = 0
	                   3진법 : 10 -> 4
	                2) 숫자 6
	                   6 % 3 = 0
	                   3진법 : 20 -> 14
	                :: 10 -> 4 둜 λ³€κ²½λ˜κΈ° λ•Œλ¬Έμ—
	                :: inputNum 3으둜 λ‚˜λˆˆ λ‹€μŒμ— 1 λΊ„μ…ˆ
	             */
	        } else {
	            tempNum.add(String.valueOf(chkMod));
	            inputNum = inputNum / 3;
	        }
	    }
	    // stack 크기 만큼 반볡문 μˆ˜ν–‰
	    // μ €μž₯ν•œκ±°μ™€λŠ” λ°˜λŒ€λ‘œ λμ—μ„œλΆ€ν„° 숫자 μΆ”μΆœ
	    int size = tempNum.size();
	    for (int i = 0; i < size; i++) {
	        sb.append(tempNum.pop());
	    }
	    answer = sb.toString();
	    return answer;
	}

}