고흐의 연구실/자료구조와 알고리즘

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

전고흐 2020. 10. 23. 02:48
728x90

문제 설명

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

제한사항

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

입출력 예

입출력 예 설명

 

코드

#include <string>
#include <vector>
#include <math.h>

using namespace std;

int solution(int n) {
    int answer = 0;
    vector <int> v;
    while(n>0){
        v.push_back(n%3); 
        n /= 3;
    }
    int temp = v.size();
    
    for(int i=0; i<temp; i++){
        answer += (v.back() * pow(3,i));
        v.pop_back();
    }
    
    return answer;
}

 

알게된 것

 - C++은 제곱(^) 연산자가 없다. #include <math.h>를 선언하고 pow(i, n)을 써야함

 - 처음에 for문에서 i<v.size()를 넣었는데, 안에서 v.pop_back()을 했다.

    이렇게 하면, size가 작아져버린다..!!

728x90