Algorithms/- 프로그래머스
프로그래머스 - 3진법 뒤집기 [자바]
자굿
2022. 1. 31. 01:52
- 문제 링크 : 3진법 뒤집기
코딩테스트 연습 - 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수
programmers.co.kr
정답
import java.util.*;
class Solution {
public int solution(int n) {
int answer = 0;
List<Integer> list = new ArrayList<>();
//처음부터 뒤집어 짐
while(n != 0){
list.add(n % 3);
n = n / 3;
}
int multi = 1;
for(int i=list.size() - 1; i>=0; i--){
if(list.get(i) != 0){
answer += list.get(i) * multi;
}
multi *= 3;
}
return answer;
}
}
분석
- 3진법을 list 쌓을 때 뒤집어져 있기 때문에 그대로 3을 곱해주면 된다.
참고할 만한 정답
- parseInt 에서 진수를 선택하여 변환할 수 있음.
- reverse를 굳이 안 써도됨
class Solution {
public int solution(int n) {
String a = "";
while(n > 0){
a = (n % 3) + a;
n /= 3;
}
a = new StringBuilder(a).reverse().toString();
return Integer.parseInt(a,3);
}
}
- 이게 최적의 정답 같음
class Solution {
public int solution(int n) {
String a = "";
while(n > 0){
a += (n % 3);
n /= 3;
}
return Integer.parseInt(a,3);
}
}
반응형