https://school.programmers.co.kr/learn/courses/30/lessons/68935
n을 3으로 나눈 나머지를 vec에 담고 n을 3으로 나눈다 ( n -= answer는 필요없다 어차피 n/=3 할때 나머지는 알아서 지워지기 때문)
이렇게 해서 vec에 담긴 숫자는 3진법으로 변환 후 앞 뒤 반전까지 되어있는 상태이므로 이 상태 그대로 사용하면된다.
vec의 뒤쪽부터 1 곱해서 더하고 3 곱해서 더하고 9 곱해서 더하고... 를 반복하면 된다.
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int solution(int n) {
int answer = 0;
vector<int> vec;
while(n)
{
answer = n % 3;
vec.push_back(answer);
n -= answer;
n /= 3;
}
answer = 0;
for(int i = 0; i < vec.size(); i++)
answer += *(vec.rbegin() + i) * (pow(3,i));
return answer;
}
#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;
}
3진법 변환 및 앞 뒤 뒤집는건 같고 3진법을 10진법으로 변환할때 back()과 pop_back()을 활용하였다.