본문 바로가기

Algorithm/Programers - C++

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

문제

풀이

#include <string>
#include <vector>
#include <cmath>
using namespace std;

int solution(int n) {
    int answer = 0;
    vector<int> num ;
    
    while(n>0){
        num.push_back(n%3);
        n /=3;
    }
    
    for(int i=0; i<num.size(); i++){
        answer += num[i] * pow(3, num.size()-i-1);        
    }
    
    return answer;
}

pow를 사용해서 3진법을 10진법으로 바꾸어주었다.

 

 

 


다른 사람 코드

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    vector<int> v;
    while(n > 0){
        v.push_back(n%3);
        n/=3;
    }
    int k = 1;
    while(!v.empty()) {
        answer += k*v.back();
        v.pop_back();
        k*=3;
    }

    return answer;
}

pow를 쓰지 않고 3진수를 10진수로 변경해주었다!