Step by Step

Programmers 3진법 뒤집기 - Python 본문

Algorithms

Programmers 3진법 뒤집기 - Python

짤진이 2023. 11. 23. 15:04
반응형

문제 링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

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


제한사항

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

코드 설명

while n!= 0:
        answer += str(n%3)
        n = n // 3
    tmp = int(pow(n,1/3))
    result = [0 for _ in range(tmp+1)]
    new_res = []
    if n <3 :
        return n
    
    while n != 0:
        if n >= pow(3,tmp):
            n -= pow(3,tmp)
            result[len(result)-tmp-1] += 1
        else:
            tmp -= 1
    for i in range(len(result)):
        answer += pow(3,i) * result[i]

 

처음에 작성했던 코드인데 자꾸 에러가 났다. 3보다 작은 경우를 고려했는데 왜 에러가 나는지 잘 모르겠지만,,

 

def solution(n):
    answer = ''
    
    while n!= 0:
        answer += str(n%3)
        n = n // 3

    return int(answer,3)

30을 예로 3진법을 변환하는 과정을 그려보면

30 / 3 = 10 ,,, 0

10 / 3 =  3  ,,, 1

3 / 3 = 1 ,,,  1     = > 011(3) 이므로 바로 3진법 변환을 해주면 답이 가볍게 나온다,,

코드를 쓰면서 어떻게 하면 더 간단하게 짤 수 있을지 고민을 많이 해봐야겠다,,

반응형

'Algorithms' 카테고리의 다른 글

Programmers 삼총사 - Python  (0) 2023.11.27
Programmers 이상한 문자 만들기 -Python  (0) 2023.11.24
Programmers 프로세스 - Python  (1) 2023.11.21
Programmers 등굣길(동적계획법) - Python  (0) 2023.11.20
SWEA 1206.View (python)  (4) 2023.11.19