[프로그래머스 Level 1] 3진법 뒤집기 문제 풀이

❓ 문제

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

제한사항

  • n은 1 이상 100,000,000 이하인 자연수입니다.

🖨️ 입출력 예

💡 풀이

class Solution {

    public int solution(int n) {
        int answer = 0;
        String temp;
        String result = "";
        
        // 3진법으로 표현
        while(n > 0) {
            temp = String.valueOf(n % 3);
            result = temp.concat(result);
            n /= 3;     
        }

        // 앞뒤 반전
        char[] c = new char[result.length()];
        for(int i = 0; i < result.length(); i++)
            c[c.length - i - 1] = result.charAt(i);

        // 10진법으로 표현
        int idx = c.length;
        int num = 1;
        while(idx-- > 0) {
            answer += (c[idx] - '0') * num;
            num *= 3;
        }

        return answer;
    }

}

✏️ comment

정렬 같은걸 최대한 내장함수를 안 쓰고 직접 구현하려고 했는데 이게 효율적인 건지 뭔진 모르겠다 !

좋은 웹페이지 즐겨찾기