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

권 해·2023년 2월 7일

Algorithm

목록 보기
2/49

문제

코드


class Solution {
    public int solution(int n) {
        StringBuilder stringBuilder=new StringBuilder();
        while(n!=0){
            stringBuilder.insert(0,n%3);
            n/=3;
        }
        String a=stringBuilder.reverse().toString();
        return Integer.parseInt(a,3);
    }
}

풀이

10진수를 읽어와 3진수로 변환하고, 변환한 것을 뒤집어서 다시 십진수로 읽어오는 문제이다.
StringBuilder 와 Integer.parseInt() 메서드를 이용하면 쉽게 해결할 수 있지만, 만약 사용법을 모르고 있는 상태에서 시험 문제로 나왔다 생각하면 살짝 힘들어진다.
Stringbuilder을 통해 십진수를 삼진수로 변환하는 과정을 문자열로 이어 붙히고, reverse 함수를 통해 문자열을 뒤집을 수 있다.
그리고 parseInt() 메소드를 통해 문자열을 삼진수로 읽어들여 10진수로 변환할 수 있다.

Stringbuilder은 앞으로 사용할 일이 많을 것 같으니 미리 사용법을 익혀두는 것이 좋을 것 같다.
그리고 +연산을 통해 문자열을 이어 붙일수도 있지만, 이는 문자열의 할당과 해제를 반복하는 작업이므로 메모리와 성능 측면에서 좋지 않다고 한다. 하지만 StringBuilder을 사용하면, 하나의 메모리 공간에서 값을 수정만 하면 되기 때문에 훨씬 더 효율적이라고 한다.

결과

출처 : 프로그래머스 코딩 테스트 연습 https://school.programmers.co.kr/learn/challenges

0개의 댓글