문제 설명
자연수 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 해야 합니다.
코드
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
public class Q_68935 {
public int solution(int n) {
int answer = 0;
int b = 0;
ArrayList<Integer> arr = new ArrayList<>();
while (true) {
b = n % 3;
n = n / 3;
arr.add(b);
if (n == 0) {
break;
}
}
for (int i = 0; i < arr.size(); i++) {
int tmp = (int) (arr.get(i) * Math.pow(3, (arr.size() - i - 1)));
answer += tmp;
}
return answer;
}
@Test
public void 정답() {
Assert.assertEquals(7, solution(45));
Assert.assertEquals(229, solution(125));
}
}
풀이 방법
- n % 3의 값을 바로 ArrayList arr에 add 해주면 따로 앞뒤 반전할 필요 없이 앞뒤 반전 값으로 들어가진다.
- 그러므로 arr의 값을 다시 10진법으로 표현하면 된다.
'Coding Test > Programmers_Level_1_Java' 카테고리의 다른 글
[프로그래머스/Java] 같은 숫자는 싫어 (0) | 2020.12.23 |
---|---|
[프로그래머스/Java] 가운데 글자 가져오기 (0) | 2020.12.23 |
[프로그래머스/Java] 2016년 (0) | 2020.12.23 |
[프로그래머스/Java] K번째수 (0) | 2020.12.23 |
[프로그래머스/Java] 체육복 (0) | 2020.12.23 |