현재노트

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

코딩테스트

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

현재노트 2021. 7. 30. 16:17

문제링크

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

 

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

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

programmers.co.kr

 

문제내용

 

요점

  • 3진법 변환 방법에 대한 개념을 알아야한다.
  • String을 뒤집어서 표현하는 방법에대해 알아야한다.
  • 10진수 변환 방법에 대한 개념을 알아야한다.

 

    public int solution(int n) {
        int answer = 0;
        String converted = "";
        String reverseStr = "";

        while(n > 0){
            converted = n%3 + converted;
            n /= 3;
        }

        StringBuilder sb = new StringBuilder(converted);
        reverseStr = sb.reverse().toString();
        answer = Integer.parseInt(reverseStr, 3);

        return answer;
    }

 

첫번째로 while문을 통해서 3진법 변환을 한다. 이후 변환된 수를 뒤집기위해 StringBuilder의 reverse() 메소드를 활용하여 String을 뒤집어주고, 이후 뒤집혀진 String을 int형태로 파싱하면서 2번째 파라미터로 몇진수의 수를 10진수로 파싱하는지 값을 넣어주어 결과를 도출한다.

 

※ StringBuffer를 사용하지 않은 이유는 멀티스레드의 경우 동기화를 위해서 StringBuffer를 사용해야하지만, 싱글스레드의 경우 성능면에서 StringBuilder가 더 우수하기 때문에 StringBuilder로 구현하였다.

Comments