프로그래머스(Programmers)

프로그래머스 3진법 뒤집기 C++

cosmohoo 2022. 1. 13. 16:41
반응형

문제설명

입출력 예 설명

입출력 예 #1

  • 답을 도출하는 과정은 다음과 같습니다.

n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현

45 1200 0021 7
  • 따라서 7을 return 해야 합니다.

입출력 예 #2

  • 답을 도출하는 과정은 다음과 같습니다.

n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현

125 11122 22111 229
  • 따라서 229를 return 해야 합니다.
#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    vector<int> threeNo; //3진법표현
    int tenNo = n;
    while(tenNo)
    {
        threeNo.push_back(tenNo%3);
        tenNo/=3;
    }
    int mul=1;
    for(int i=threeNo.size()-1; i>=0; i--)
    {
        answer += threeNo[i]*mul;
        mul*=3;
    }
    return answer;
}

 

=> 3진법으로 변환하는 방법은 3으로 나누면서 계속 threeNo에 push하면 됩니다. 

=> 이후 3진법을 거꾸로 하라고 하였지만 굳이 그럴 필요는 없습니다. 

=> 만들어진 3진법을 뒤에서부터 거꾸로 3진법을 10진법으로 바꾸는 계산을 해주면 됩니다. 

 

반응형