https://programmers.co.kr/learn/courses/30/lessons/68935
[문제]
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
[제한 조건]
n은 1 이상 100,000,000 이하인 자연수입니다.
[코드]
import java.util.*;
class Solution {
public int solution(int n) {
int answer = 0;
ArrayList<Integer> three=new ArrayList<Integer>();
int num=n;
// 10진법을 3진법 역순으로 바꿔 ArrayList에 저장
while(num>0) {
three.add(num%3);
num/=3;
}
/*
* ArrayList에는 이미 n을 3진법으로 바꾼 수가 역순으로 저장되어 있기 때문에
* 그 순서대로 다시 10진법으로 바꾸면 된다.
*/
for(int i=0;i<three.size();i++)
answer+=three.get(i)*Math.pow(3, three.size()-1-i);
return answer;
}
}
[고찰]
이번 문제는 n을 3으로 나눈 수를 저장하게 되면 n을 3진법으로 바꾼 수의 역순으로 저장되기 때문에 저장된 수 그대로 다시 10진법으로 바꿔주면 된다. 풀면서 어떤 수가 지금 ArrayList에 저장되는지 출력하면서 해결해나가니 쉽게 이해하면서 풀 수 있었다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스_Level1] 약수의 개수와 덧셈 (0) | 2021.07.16 |
---|---|
[프로그래머스_Level1] 실패율_2019 카카오 신입 공채 (0) | 2021.07.16 |
[프로그래머스_Level1] 두 개 뽑아서 더하기 (0) | 2021.07.16 |
[프로그래머스_Level1] 2016년 (0) | 2021.07.16 |
[프로그래머스_Level1] 가운데 글자 가져오기 (0) | 2021.07.16 |