3진법 뒤집기
본문 바로가기
항해 전/스터디(Python 알고리즘)

3진법 뒤집기

by 은돌1113 2021. 10. 28.

10월 28일

오늘은 3진법 뒤집기라는 문제를 풀어 보았다.

입출력 예시는 사진에서 보이는 것처럼 45(10진법) -> 1200(3진법) -> 0021(앞뒤 반전(3진법)) -> 7(10진법)으로

출력하는 예시이다.

 

처음 풀어본 코드에서는 설명이 붙어 있어서 조금 복잡 해보이긴 한다.

def solution(n):
    
    answer = 0
    
    # 1. 3진법
    rev_base = ''
    
    while n > 0:
        n, mod = divmod(n, 3)
        # divmod를 사용하면 몫과 나머지를 알 수 있다.
        rev_base += str(mod)
        
    n = rev_base[::-1] 
    # 역순인 진수를 뒤집어 줘야 원래 반환 하고자 하는 base가 출력

    # 2. 앞뒤 반전(3진법)
    # 1) n = ''.join(reversed(n))
    # 2)
    # n_list = list(n)
    # n_list.reverse()
    # n = ''.join(n_list)
    # 3)
    n = n[::-1]
    # 문자열을 [::-1]이라는 인덱스로 호출하면
    # 아주 간단하게 해당 문자열을 뒤집은 결과를 반환한다.

    # 3. 10진법
    answer = int(n, 3)
    
    return answer

print(solution(45))
print(solution(125))

이걸 좀 더 다듬어 본 코드는

def solution(n):
    
    answer = 0
    
    rev_base = ''
    
    while n > 0:
        n, mod = divmod(n, 3)
        rev_base += str(mod)

    answer = int(rev_base, 3)
    
    return answer

print(solution(45))
print(solution(125))

앞에서 적었던 코드들 중에서 겹치는 부분들이나 없어도 될 부분들을 삭제한 후 간결하게 만들어 보았다.


출처

https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A7%84%EC%88%98%EB%B3%80%ED%99%982%EC%A7%84%EB%B2%95-3%EC%A7%84%EB%B2%95-5%EC%A7%84%EB%B2%95-10%EC%A7%84%EB%B2%95n%EC%A7%84%EB%B2%95

 

파이썬 진수변환(2진법, 3진법, 5진법, 10진법)[n진법]

python에서는 기본적으로 int() 라는 함수를 지원한다int(string, base)2051104185276710진수로 변경이 가능하다.2, 8, 16진수는 bin(), oct(), hex() 함수를 지원한다.0b10110o130xb0b는 2진수, 0o는 8진수,

velog.io

https://itholic.github.io/python-reverse-string/

 

[python] 문자열 거꾸로 출력하기 [::-1]

문자열 거꾸로 출력하기

itholic.github.io

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

 

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

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

programmers.co.kr

'항해 전 > 스터디(Python 알고리즘)' 카테고리의 다른 글

로또의 최고 순위와 최저 순위  (0) 2021.10.29
같은 숫자는 싫어  (0) 2021.10.26
소수 만들기  (0) 2021.10.25
완주하지 못한 선수  (0) 2021.10.24
8조 첫번째 스터디 회의  (2) 2021.10.20

댓글