Algorithm/Algorithm Test

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

MarrRang 2021. 3. 28. 18:23

카테고리

기본 알고리즘

나만의 카테고리

아이디어 짜기

문제 링크

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

 

코딩테스트 연습 - 3진법 뒤집기

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

programmers.co.kr

요점

  • 진법 변환 방법에 대해 알아야한다.
  • String 뒤집는 방법에 대해 알아야한다.
  • Integer.parseInt(String str, int radix)

참고 지식

  • [Java] Integer.parseInt(String str, int radix)

풀이 (Java)

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        String convertedString = makeRadix3(n);
        convertedString = reverseString(convertedString);
        answer = Integer.parseInt(convertedString, 3);
        
        return answer;
    }
    
    private String makeRadix3(int n) {
        String converted = "";
        while(n > 0) {
            converted = (n % 3) + converted;
            n /= 3;
        }
        
        return converted;
    }
    
    private String reverseString(String str) {
        StringBuffer sb = new StringBuffer(str);
        
        return sb.reverse().toString();
    }
}

각 부분을 함수형태로 만들고 메인 solution 함수는 간단하게 구성했습니다.

makeRadix3은 3진법으로 변환하는 함수인데 함수 내에서 '3'으로 하드코딩 되어 있는 부분만 원하는 진법으로 변경하면 모든 진법 변환 문제에 활용할 수 있습니다.

문자열을 뒤집는 방법은 구글에서 여러 방법을 찾아볼 수 있지만 지금까지 써본바로는 StringBuffer를 쓰는게 제일 편하더라구요 ㅎㅎ


알고리즘 초보가 정리한 글입니다

더 좋은 방법이나 코드에 대한 코멘트 언제나 환영합니다!

반응형