새소식

⌨️ Algorithms/프로그래머스

[Python] 프로그래머스 Lv1_3진법 뒤집기

2023. 4. 17. 18:34

  • -

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

 

프로그래머스

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

programmers.co.kr

 

  • 자연수 n이 매개변수로 주어짐
  • n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return

제한사항

  • n은 1 이상 100,000,000 이하인 자연수

 

"""
입출력 예시)

n = 45 -> 7
n = 125 -> 229
"""

 

# n = 45 -> 7

# 1) n의 10진법: 45
# 2) n의 3진법: 1200
# 3) 3진법 앞뒤 반전: 0021
# 4) 반전된 3진법을 10진법으로 표현: 7
# n = 125 -> 229

# 1) n의 10진법: 125
# 2) n의 3진법: 11122
# 3) 3진법 앞뒤 반전: 22111
# 4) 반전된 3진법을 10진법으로 표현: 229

 

 

## 의사 코드 ##

# 진수변환
# 10진수 -> n진수
# 직접 코드로 작성해야 함 
# divmod(n1, n2) -> (n1을 n2로 나눈 몫, n1을 n2로 나눈 나머지) 

# n진수 -> 10진수
# int('숫자', n진법)

 

 

 

 

def convert(num, n):
    # 진수를 역순으로 표현 
    rev_base = ''
    while num > 0:
        # num을 n으로 나눈 몫과 나머지 
        num, mod = divmod(num, n)
        rev_base += str(mod)
    # num을 n진법으로 표현된 수 => rev_base[::-1]
    # 3진법으로 바꾼 수를 앞뒤 반전하기 위해 rev_base 그대로 반환 
    return rev_base

def solution(n):
    # 3진법으로 바꾼 수를 앞뒤 반전한 값
    third = convert(n, 3)
    # 3진수 -> 10진수
    return int(third, 3)

 

 

-> 10진법을 n진법으로 변환한 값을 앞뒤 반전한 값으로 반환하는 함수와 그 값을 다시 10진법으로 반환하는 함수로 구현

 

 

  • divmod(n1, n2)
    • 반환 값: (n1을 n2로 나눈 , n1을 n2로 나눈 나머지)
      • -> 튜플 형태로 반환 

 

 

 

 

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

    answer = int(tmp, 3)
    return answer

 

 

-> 하나의 함수로 구현

 

 

 

 

 

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

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!