본문 바로가기
Algorithms/코테 문풀

[백준 2745, 11005번] 진법 변환1, 진법 변환2

by hi-rachel 2023. 8. 18.

문제

https://www.acmicpc.net/problem/2745

 

2745번: 진법 변환

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 

www.acmicpc.net

 

https://www.acmicpc.net/problem/11005

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를

www.acmicpc.net


풀이

- 진법 변환

n, b = input().split()
print(int(str(n), int(b)))

 

B진법 수 N을 10진법으로 바꿔 출력하기

: python 내장함수 int(문자열, 정수)를 활용해 n진수를 10진수로 변환할 수 있다.

 

 

- 진법 변환2

import string

n, b = map(int, input().split())

def convert(num, base):
  number = string.digits + string.ascii_uppercase
  q, r = divmod(num, base)
  return convert(q, base) + number[r] if q else number[r]

print(convert(n, b))

 

10진법 수 N을 B진법으로 바꿔 출력하기

: 직접 함수를 구현해주어야 한다.

  • string.digits = 0 ~ 9인 문자열
  • string.ascii_uppercase = A ~ Z인 문자열
  • // 연산자와 % 연산자를 각각 호출해 몫, 나머지를 동시에 구하는 divmod() 함수 사용

 


 

참고

- https://duwjdtn11.tistory.com/486

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

- https://joyjangs.tistory.com/35