124 λλΌκ° μμ΅λλ€. 124 λλΌμμλ 10μ§λ²μ΄ μλ λ€μκ³Ό κ°μ μμ λ€λ§μ κ·μΉμΌλ‘ μλ₯Ό ννν©λλ€.
μλ₯Ό λ€μ΄μ 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 |
Stack<String> tempNum = new Stack<>();
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;
}
}