티스토리 뷰
728x90
파이썬에서는 2진수, 8진수, 10진수, 16진수로 쉽게 변환할 수 있도록 내장함수가 포함되어 있다.
하지만 3진수나 4진수와 같이 다른 진수로 변환하고자 한다면 직접 구현을 할 수 밖에 없다.
1. 파이썬 내장 함수
[PYTHON] 파이썬 10진수 변환(2진수,8진수,16진수) (tistory.com)
2. 10진수 → n진수
2-1. 10진수를 n진수로 변환하기(2진수-16진수)
def convert_notation(n, base):
T = "0123456789ABCDEF"
q, r = divmod(n, base)
return convert_notation(q, base) + T[r] if q else T[r]
print(convert_notation(233, 3))
* divmod 함수 : [Python] 몫과 나머지 동시에 구하기 - divmod 함수 (tistory.com)
2-2. 10진수를 n진수로 변환하기(2진수-9진수)
9진법까지는 다음과 같이 간단하게 구할 수 있다는 것도 기억해두자!
d = 45
n = 3
tmp = ''
while d:
tmp += str(d % n)
d = d // n
print(int(tmp)) # 1200
3. n진수 → 10진수
3-1. n진수를 10진수로 변환하기(2진수-9진수)
- n진수의 순서를 반대로 만든다.
- n의 제곱 차수를 늘려가면서 값을 곱해준다.
- 누적한다.
def convert_to_decimal(n, base):
decimal = 0
for idx, val in enumerate(str(n)[::-1]):
decimal += (3 ** idx) * int(val)
return decimal
print(convert_to_decimal(21, 3) # 7
* enumerate :
* [::-1] : [Python] 문자열(String) 뒤집기 - [::-1] (tistory.com)
3-2. n진수를 10진수로변환하기 - int 함수
파이썬의 내장함수인 int 함수를 이용하여 편하게 n진수를 10진수로 변환할 수 있다.
첫번째 인자로 문자열이 와야한다는 것에 주의하자!
print(int(str(21), 3))
728x90
'Algorithm' 카테고리의 다른 글
프로그래머스 - 로또의 최고 순위와 최저 순위 (Python) (2) | 2021.10.16 |
---|---|
[CodingTest] 2021 카카오 채용 연계형 인턴십 : 거리두기 확인하기 (0) | 2021.07.19 |
[CodingTest/Python] 소수(Prime Number) 판별 (0) | 2021.05.10 |
[JAVA] 문자(열)을 다루는 다양한 방법 (0) | 2021.03.31 |
[JAVA] StringBuilder - 출력 메소드 호출 빈도 낮추기 (0) | 2021.03.31 |
댓글
공지사항
최근에 올라온 글