Programers : 3진법 뒤집기

김정욱·2021년 1월 19일
0

Algorithm - 문제

목록 보기
37/249
post-thumbnail

3진법 변환

  • 해당 문제는 3진법으로 변환하면 쉽게 해결되는 문제이다
  • 10진법을 n진법으로 만드는 과정은 다음과 같다.
    1) 10진법의 수를 변환하고자 하는 숫자 n으로 나눈 후 (몫 / 나머지를 구한다)
    2) 나머지는 순서대로 오른쪽에 위치시키며, 몫은 0이 될 때 까지 나눈다.
    3) 나오는 나머지를 역순으로 배열시키면 n진법으로 변환한 수가 나온다
  • n진법이 된 수를 다시 10진법으로 변환하기 위해서 <cmath>에 있는 pow()를 사용!
  • <string>에 있는 reverse()를 통해 string 및 vector등을 거꾸로 위치시킬 수 있음 !

코드

#include <string> // reverse()를 사용하기 위함
#include <vector>
#include <algorithm> 
#include <cmath> // pow()를 쓰기 함 - 제곱근
using namespace std;

int solution(int n) {
    int answer = 0;
    vector<int> v;
  /* 3진법으로 변환시키는 코드! */
    while(n!=0)
    {
        v.push_back(n%3);
        n/=3;
    }
    reverse(v.begin(), v.end());
  /* 다시 10진법으로 변환시키는 코드 ! */
    for(int i=0;i<v.size();i++)
    {
        answer += pow(3,i) * v[i];
    }
    return answer;
}
profile
Developer & PhotoGrapher

0개의 댓글