-
프로그래머스 - 3진법 뒤집기 [자바]Algorithms/- 프로그래머스 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); } }
반응형