euisblue
68935. 3진법 뒤집기

Level 1 3진법 뒤집기

시간 복잡도: O(max(log3(N), len(S))), S = the length of base3 num

1#include <bits/stdc++.h> 2using namespace std; 3 4int solution(int n) { 5 string base3 = ""; 6 7 while(n>2) { 8 int div = n/3; 9 int rem = n%3; 10 base3 += to_string(rem); 11 n /= 3; 12 } 13 base3 += to_string(n); 14 15 int sum = 0; 16 const int SIZE = base3.size(); 17 for(int i=SIZE-1, j=0; i>=0; --i, ++j) { 18 sum = sum + (base3[i]-'0')*powl(3, j); 19 } 20 21 return sum; 22}

값을 3으로 나눈 나머지를 가지고 3진법으로 변환을 한다. 이렇게 할 경우 지동적으로 앞뒤 반전이 된 형태가 된다.