문제풀이/프로그래머스

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

Hyeon-Uk 2020. 11. 24. 00:57
반응형

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

 

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

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

programmers.co.kr


문제풀이)

이진수를 구하듯이 같은방법으로 3진수를 구해준다.

3진수 구하는 방법

1.n을 3으로 나눠준 값을 temp에 저장한다. -> n을 3으로 나눠준다 (n>0일때까지)

2.temp를 리버스시킨다.

 

하지만 문제에서 3진법 앞뒤반전을 하라했으니, 우리는 1번까지만 시행해주고, 3진수를 10진수로 변환시켜주면된다.

 

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    string temp="";
    while(n>0){
        temp+=((n%3)+'0');
        n/=3;
    }
    int mul=1;
    for(int i=temp.length()-1;i>=0;i--){
        answer+=(temp.at(i)-'0')*mul;
        mul*=3;
    }
    return answer;
}

 

반응형