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

당당·2023년 5월 10일
0

프로그래머스

목록 보기
83/245

https://school.programmers.co.kr/learn/courses/30/lessons/68935

📔문제

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


🚫제한사항

n은 1 이상 100,000,000 이하인 자연수입니다.


📝입출력 예

nresult
457
125229

입출력 예 #1

답을 도출하는 과정은 다음과 같습니다.

n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현
45120000217

따라서 7을 return 해야 합니다.

입출력 예 #2

답을 도출하는 과정은 다음과 같습니다.

n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현
1251112222111229

따라서 229를 return 해야 합니다.


🧮알고리즘 분류

  • 반복문

📃소스 코드

import java.util.*;
class Solution {
    public int solution(int n) {
        int answer = 0;
        String temp="";
        if(n<=2){
            temp+=n;
        }
        while(n>=3){
            temp+=String.valueOf(n%3);
            n=n/3;
            if(n<3){
                temp+=n;
            }
        }
        
        int len=temp.length();
        int sum=0;
        for(int i=0;i<len;i++){
            int tmp=temp.charAt(i)-'0';
            sum+=tmp*Math.pow(3,len-i-1);
        }
        answer=sum;
        return answer;
    }
}

📰출력 결과


📂고찰

3진법을 구하고 바로 temp에 넣으면 알아서 앞뒤 반전으로 들어간다.
인덱스 0번부터 하므로.. len-i-1제곱을 해줘야 하는 것에 주의하자!

profile
MySQL DBA 신입 지원

0개의 댓글