반응형
자바 코드로 풀었다!!
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
n result
45 | 7 |
125 | 229 |
입출력 예 설명
입출력 예 #1
- 답을 도출하는 과정은 다음과 같습니다.
n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
45 | 1200 | 0021 | 7 |
- 따라서 7을 return 해야 합니다.
입출력 예 #2
- 답을 도출하는 과정은 다음과 같습니다.
n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
125 | 11122 | 22111 | 229 |
- 따라서 229를 return 해야 합니다.
문제 푸는 방법:
int 로 계산하면 너무 큰 숫자에 대해서는 받아줄 수 없으므로,
Long으로 계산해준다.
그리고 char -> int로 바꾸어주는 Character.getNumericValue(c); 를 사용하는 것도 필요하다.
정답 코드는 아래와 같다.
import java.lang.Math;
class Solution {
public int solution(int n) {
int answer = 0;
String str = Long.toString(Long.parseLong(convert(n)));
int idx = 0;
for(int i=str.length()-1; i>-1;i--){
System.out.println("i:"+i);
answer += Math.pow(3,i)*Character.getNumericValue(str.charAt(idx));
idx++;
}
return answer;
}
public String convert(int num){
if(num/3 == 0){
return Integer.toString(num%3);
}
return Integer.toString(num%3) + convert(num/3);
}
}
반응형
'프로그래머스' 카테고리의 다른 글
프로그래머스 '나누어 떨어지는 숫자 배열' 문제풀이 - Henry's Algorithm (0) | 2020.11.13 |
---|---|
프로그래머스 '같은 숫자는 싫어' 문제풀이 - Henry's Algorithm (0) | 2020.11.13 |
프로그래머스 '가운데 글자 가져오기' 문제풀이 - Henry's Algorithm (0) | 2020.11.13 |
프로그래머스 '2016년' 문제풀이 - Henry's Algorithm (0) | 2020.11.12 |
프로그래머스 '완주하지 못한 선수' 문제풀이 - Henry's Algorithm (0) | 2020.11.12 |