
package programmers.level2;
public class Ternary {
public int solution(int n) {
int answer = 0;
long mok = 0;
long namuji = 0;
long ternary = 0;
long ten = 1;
for(int i = 3; i <= n;){ //3진법으로 변환하는 코드
namuji += n % i * ten;
mok = n /= i;
mok *= ten;
ten = ten * 10;
}
mok *= 10;
ternary = mok + namuji; //여기까지하면 입력된 숫자 n은 3진법이됨.
long[] t = new long[String.valueOf(ternary).length()]; //여기부터는 3진법을 거꾸로 뒤집는 과정
int i = 0;
while(ternary > 0){
t[i] = ternary % 10;
ternary /= 10;
i++;
} //여기까지하면 3진법의 숫자가 뒤집어짐
for (int j = 0; j < t.length; j++) { //여기서는 3진법을 다시 10진법으로 바꾸는 과정
answer += (int) (t[j] * Math.pow(3, t.length - (j + 1)));
}
return answer;
}
public static void main(String[] args) {
Ternary t = new Ternary();
System.out.println(t.solution(100000000));
}
}
난 개어렵게 풀었는데 풀고나서 뿌듯함에 다른사람 답을 보니 Integer.parseInt에 진법 관련 기능이 있었다...
int binary = Integer.parseInt("1101", 2);
이렇게 하면 1101이라는 2진수를 10진법으로 결과를 도출해 주는 것이다.
다음에 써먹어야 겠다.
'오류, 기능, 문제해결(JAVA)' 카테고리의 다른 글
| 프로그래머스 명예의 전당(1), PriorityQueue (0) | 2025.02.07 |
|---|---|
| 스프링 test 코드 진행중 classNotFoundException 터짐 (1) | 2025.02.05 |
| Class, System, Math, Random 클래스 (0) | 2025.01.15 |
| 키오스크 과제 트러블슈팅 (0) | 2025.01.13 |
| System.out.println() 에 기본형 변수 넣을때 동작 원리? (0) | 2025.01.09 |