프로그래머스 3진법 뒤집기 JAVA 풀이
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한 조건
- n은 1 이상 100,000,000 이하인 자연수입니다.
풀이
import java.util.*;
class Solution {
public int solution(int n) {
if (n < 3) { // 3보다 작은 수는 그대로 반환한다.
return n;
}
ArrayList<Integer> integers = new ArrayList<>();
int mok = n; // 몫
int temp = n; // 나머지
while (mok > 2) { // 몫이 2보다 큰 경우까지만 loop
temp = mok % 3;
mok = mok / 3;
integers.add(temp);
if (mok < 3) {
integers.add(mok);
}
} // 3진법 상에서 앞뒤로 뒤집은 상태로 integers에 담겨진다.
double tempAnswer = 0;
for (int i = 0; i < integers.size(); i++) {
Integer integer = integers.get(integers.size() - (i + 1)); // 뒤에부터 꺼내서
tempAnswer += (integer * Math.pow(3, i)); // 3의 i제곱근을 곱해서 더해준다
}
int answer = (int) Math.round(tempAnswer);
return answer;
}
}
댓글남기기