Data house

[python] 3진법 변환 - divmod(), int() 본문

Computer Knowledge/코테 대비 오답노트

[python] 3진법 변환 - divmod(), int()

l._.been 2023. 9. 20. 12:39
728x90
문제

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

 

프로그래머스

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

programmers.co.kr

 

문제 요약

10진법으로 된 숫자 --> 3진법으로 변환 --> 앞뒤 반전 --> 10진수의 수로 표현

 

필요한 기술
  • 나눗셈의 기초 알기 : //, %의 차이 
    ㄴ> python 내장함수 divmod()는 ( 몫, 나머지 )형태의 튜플 반환한다. 즉, (//, %)의 결과값을 한 번에 얻을 수 있음

  • n진법 -> 10진법: int 사용하기
    ㄴ>   int('0021', 3) == 7 

 

나의 정답
def solution(n):
    rev_base = ''
    
    
    # 10 진법 -> 3 진법 (앞뒤 반전)
    while n > 0:
        n, mod = divmod(n, 3)
        # mod = n%3
        # n = n //3
        rev_base += str(mod)
    
    # 10진법으로 표현
    return int(rev_base, 3)

 

 

참고 자료

https://www.daleseo.com/python-divmod/

 

파이썬의 divmod() 내장 함수로 나눗셈하기

Engineering Blog by Dale Seo

www.daleseo.com

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