본문 바로가기
프로그래밍/알고리즘

[프로그래머스] [Level1] 3진법 뒤집기 - Java

by lee365 2020. 12. 26.
반응형

💁‍♀️ 링크

programmers.co.kr/learn/courses/30/lessons/68935

 

📃 문제 

자연수 n이 매개변수로 주어집니다.

n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

 

입출력 예 #1

  • 답을 도출하는 과정은 다음과 같습니다.
 n (10진법)                n (3진법)          앞뒤 반전(3진법)  10진법으로 표현
 45  1200  0021  7  (return 값)

 

 

🐾 문제풀이

10진법에서 3진법으로 바꾸는 과정을 생략하고, 앞뒤반전 3진법 수를 temp배열에 바로 넣어서 풀이

 

 

💻 코드

import java.util.*;
class Solution {
    public int solution(int n) {
        int answer = 0;
        ArrayList<Integer> temp = new ArrayList<>();
        
        // 10진법 -> 3진법(역순)
        while(true){
            if(n<3){ temp.add(n); break; }
            temp.add(n%3);
            n = n/3;
        }
        // 3진법(역순) -> 10진법
        for(int i=0; i<temp.size(); i++){
            answer += (Math.pow(3,temp.size()-i-1)*temp.get(i));
        }
        
        return answer;
    }
}

 

 

 

반응형