[프로그래머스] 3진법 뒤집기 문제풀이

 


1. 문제

https://programmers.co.kr/learn/courses/30/lessons/68935

2. 풀이

  • 3으로 원래 숫자가 1보다 클 동안 나머지 연산을 계속해서 수행하면 3진수의 역수를 구할 수 있다. 이 수를 10진수로 변경하면 정답

2.1. python

def solution(n):
    answer = ''
    while n >= 1:
        n, residue = divmod(n, 3)
        answer += str(residue)
    answer = int(answer, 3)
    
    return answer

2.2. c++

#include <string>

using namespace std;

string Invert_Three(int n)
{
    string result = "";
    while (n > 0)
    {
        char tmp = (n % 3) + '0';
        result += tmp;
        n /= 3;
    }
    return result;
}

int solution(int n) {
    return stoi(Invert_Three(n), NULL, 3) ;
}