월간 코드 챌린지 시즌1 [3진법 뒤집기]

wi_label·2021년 2월 18일
1

Coding Test

목록 보기
19/88
post-thumbnail

3진법 뒤집기

문제 설명

자연수 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 해야 합니다.

class Solution {
    public int solution(int n) {
        int answer = 0;
        StringBuilder builder = new StringBuilder();
        
        // 3진수 변환 
        builder.append(Integer.toString(n, 3));
        // 값 반전
        builder.reverse();
        
        // 10진수 변환
        int a = builder.length()-1;
        for (int i=0;i< builder.length();i++){
            int before = Integer.parseInt(builder.substring(i, i + 1)); 
            answer     += before * Math.pow(3,a);
            a--; 
        } 
        
        return answer;
    }
}
function solution(n) {
    let answer = 0;
    let bowl = n.toString(3);
    
    for(let i = bowl.length - 1; i >= 0; i--){
        answer += parseInt(bowl.substr(i, 1)) * Math.pow(3,i);
    }
    
    return answer;
}
profile
옥은 부서질 지언정 흰 빛을 잃지 않고, 대나무는 불에 탈 지언정 그 곧음을 잃으려 하지 않는다.

0개의 댓글