[LV1/python] 3진법 뒤집기

nut3lla·2022년 4월 24일
0

Programmers

목록 보기
7/74

문제 설명

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

제한사항

  • n은 1 이상 100,000,000 이하인 자연수입니다.

입출력 예

nresult
457
125229

SOLVE

n(10)n1(3)n1(3)_reversen2(10)
45120000217
  • n -> n1 : 3진수로 변환
	def ten_to_three(x):
    arr=[]
    while True:
        if x<3:
            arr.append(x)
            arr.reverse()
            return arr	#: 리스트로 반환
        arr.append(x%3)
        x=x//3
  • n1리스트를 0번째부터 다시 10진수로 바꾼다
    (0번째부터 돌리므로 뒤집어서 10진수로 바꾼것과 같음)
		def solution(n):
   		 re = ten_to_three(n)
    		finalRe=0
    		for i in range(len(re)):
        		finalRe+=(3**i)*int(re[i])
    		return finalRe

def ten_to_three(x):
    arr=[]
    while True:
        if x<3:
            arr.append(x)
            arr.reverse()
            return arr
        arr.append(x%3)
        x=x//3
def solution(n):
    re = ten_to_three(n)
    finalRe=0
    for i in range(len(re)):
        finalRe+=(3**i)*int(re[i])
    return finalRe

다른 사람의 풀이 중 좋은 풀이를 가져와봤다

def solution(n):
    tmp = ''
    while n:
        tmp += str(n % 3)
        n = n // 3

    answer = int(tmp, 3)  # int()로 10진수
    return answer

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

profile
🦴피곤행🦴

0개의 댓글