새벽코딩

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

알고리즘

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

J 코딩 2023. 8. 10. 16:00
반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

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


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

입출력 예nresult
45 7
125 229

※ JAVA 코드 (3진법 뒤집기)

class Solution {
    public int solution(int n) {
        int answer = 0;
        String s = "";

        while(n > 0){
            if(n == 1 || n == 2) {
                s += n;
                break;
            }

            s += n % 3;
            n /= 3;
        }
        double tmp;

        for(int i = 0; i < s.length(); i++){
            int num = (int) s.charAt(i) - '0';
            tmp = num * Math.pow(3, s.length() - i - 1);
            answer += (int) tmp;
        }
        return answer;
    }
}

※ 생각정리 (3진법 뒤집기)

1) 3진수 변환하여 문자열에 담아준다 (이때 거꾸로 담긴다)

while(n > 0){
    if(n == 1 || n == 2) {
        s += n;
        break;
    }

    s += n % 3;
    n /= 3;
}

 

2) 3진수를 10진수로 변환

for(int i = 0; i < s.length(); i++){
    int num = (int) s.charAt(i) - '0';
    tmp = num * Math.pow(3, s.length() - i - 1);
    answer += (int) tmp;
}

 

 

-새벽코딩-

반응형
Comments