본문 바로가기

Language/Python

3진법 뒤집기

반응형

👩‍🏫 문제설명

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

제한사항

  • n은 1 이상 100,000,000 이하인 자연수입니다.
def solution(n):
    strResult = ''
    answer = 0
    flag = True
    mok = n

    while (flag):     
        etc = (int)(mok % 3)
        mok = (int)(mok / 3)

        if n < 3:
            flag = False
            strResult = strResult + str(mok) + str(etc)
        else:
            if mok < 3:
                flag = False
                strResult = strResult + str(etc) + str(mok)
            else:
                strResult = strResult + str(etc)

    strResult = ''.join(reversed(strResult))
    for i in range(len(strResult)):
        answer = answer + int(strResult[i]) * pow(3, i)

    return answer

 

n이 3보다 작은 수인 경우 몫, 나머지 순서가 아닌 나머지, 순서로 계산되어 진다.

반응형