문제 풀이 (JAVA)
class Solution {
public int solution(int n) {
int Inum = 0;
int answer =0;
String Snum="";
while(n>0){ // 앞뒤 반전 3진법으로 저장하는 반복문
Inum=n%3;
Snum+=Integer.toString(Inum); // 계산된 3진법 나머지 숫자를 문자열로 변환
n=n/3; // 다음 나눌 숫자를 3으로 나눠 저장한다.
}
int j=Snum.length()-1; // 3진법 첫번째 숫자의 제곱을 계산하기 위한 변수 선언.
for(int i=0;i<Snum.length(); i++){
// 앞뒤반전 (숫자 3의 n승 * 숫자) 식을 사용하여 10진수로 저장.
answer+=(int)Math.pow(3,j--)*Character.getNumericValue(Snum.charAt(i));
}
return answer;
}
}
주요 핵심 포인트
1. while문을 사용하여 앞뒤 반전 3진법 수를 문자열로 저장하였다.
2. 3진법 첫번째 숫자의 제곱은 문자열의 길이 - 1 의 규칙을 사용하여 3진법 숫자를 차례대로 10진법 수로 바꾸어 10진법으로 저장하였다.
'프로그래머스(JAVA)' 카테고리의 다른 글
실패율 (0) | 2022.05.21 |
---|---|
약수의 개수와 덧셈 (0) | 2022.05.21 |
예산 (0) | 2022.05.21 |
두 개 뽑아서 더하기 (0) | 2022.05.21 |
2016년 (0) | 2022.05.21 |