프로그래머스(Level1-18)3진법 뒤집기

LEE ·2022년 2월 16일

문제설명:
자연수 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 해야 합니다.

구현코드 1 :

import java.util.*;
class Solution {
    public int solution(int n) {
        int answer = 0;
		ArrayList<Integer>list=new ArrayList<>();
		
		while(n!=0){
			list.add(n%3);
			n/=3;
		}
		
		int three=1;
		for(int i=list.size()-1;i>=0;i--){
			answer+=list.get(i)*three;
			three*=3;
		}
        return answer;
    }
}

코드해석:
정말 간단하다 앞뒤 반전을 생각하자마자 맨 처음 나머지가 앞뒤반전했을 때 의 맨 앞에수로 오면되는 것이기 때문에 list 에 담고 다시 10 진수로 바꿔주면 되는 문제이다.
구현코드2

import java.util.*;
class Solution {
    public int solution(int n) {
        String answer = "";
		while(n!=0){
			answer+=n%3;
			n/=3;
		}
		
        return Integer.parseInt(answer,3);
    }
}

코드해석:
Integer.parseInt를 이용하여 n진수를10진수로 바로 바꿀수있는메서드 저도 처음 알게되었다.잘 활용한다면 좋을거 같습니다 !.

0개의 댓글