STUDY/Algorithm

[프로그래머스] 3진법 뒤집기, python, C

sinawi95 2021. 4. 2. 09:58
728x90

programmers.co.kr/learn/courses/30/lessons/68935?language=python3

 

코딩테스트 연습 - 3진법 뒤집기

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수

programmers.co.kr

def solution(n):
    answer = int(three(n), 3)
    return answer

def three(number):
    ans = ''
    while number > 0:
        ans += str(number % 3)
        number //= 3
        if 0 < number < 3:
            ans += str(number)
            break
    return ans

파이썬에선 내장함수로 구할수있다.

int(number_string, n)으로 string으로 주어진 숫자로 n진법으로 구했을때 숫자를 구할수 있다.

편리한 기능이지만 알고리즘엔 도움이 되진 않는듯하다.

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int n) {
    int temp = 0;
    int cn = n;

    while (cn != 0)
    {
        int remain = cn % 3;
        temp *= 3;
        temp += remain;
        cn /= 3;

    }


    return temp;
}

공부하기 위해 가져온 코드

파이썬에서는 그냥 str을 사용해서 하나씩 쌓아올렸지만 여기에선 3을 곱해서 하나씩 쌓아 올렸다.