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

엉무개·2021년 4월 26일
0

알고리즘

목록 보기
5/12
post-thumbnail

링크

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

문제

자연수 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 해야 합니다.
    입출력 예 #2
  • 답을 도출하는 과정은 다음과 같습니다.
    n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
    125 11122 22111 229
    따라서 229를 return 해야 합니다.

과정

친절한 문제이기 때문에 설명대로 코드를 작성하면 어렵지 않게 풀 수 있었다.

char형을 int형으로 바꿀 때 (int)char를 쓰는 실수를 했고 이것 때문에 바보같이 시간을 낭비했다.

코드

import java.util.*;

class Solution {
    public int solution(int n) {
        String reverseN3 = getReverseN3(n);
        int n10 = getN10(reverseN3);
        return n10;
    }
    
    private int getN10(String str){
        int ji = 0;
        int sum=0;
        for(int i=str.length()-1 ; 0 <= i ; i--){
            
            char cNumber = str.charAt(i);
            int number = (int)cNumber - '0';
            
            sum += number * Math.pow(3,ji);
            
            ji++;
        }
        
        return sum;
    }
    
    private String getReverseN3(int n){
        int j = 3;
        String result = "";
        while(n >= j){
            int namo = n % j;
            n /= j;
            result += Integer.toString(namo);
        }
        result += Integer.toString(n);
        
        return result;
    }
}
profile
엉덩이가 무거운 개발자

0개의 댓글

관련 채용 정보