티스토리 뷰
파이썬에서 주어지는 내장 함수를 사용하지 않고
직접 10진수 -> n진수, n진수 -> 10진수로 변환하는 코드를 작성하겠습니다.
10진수 -> N진수 변환
n_dic1 = {
0: '0', 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: '8', 9: '9', 10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F'
}
def change_10_to_n(n, value):
result = ''
q, r = divmod(n, value)
while q > 0:
result += n_dic1[r]
q, r = divmod(q, value)
result += n_dic1[r]
return result[::-1]
n이 10진수 값이고, value는 바꾸려는 진수 값입니다.
딕셔너리를 선언하지 않고 나머지를 문자열에 추가하게 되면 10진수 이상으로는 변환할 수 없기 때문에 다음과 같이 선언하였습니다.
N진수 -> 10진수 변환
n_dic2 = {
'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, 'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15
}
def change_n_to_10(s, value):
result = 0
s = s[::-1]
for i in range(len(s)):
result += n_dic2[s[i]] * (value ** i)
return result
이번엔 문자열의 형태로 N진수의 값을 s로 받고, value는 s의 진수 값입니다.
아까 딕셔너리와 반대로 이 딕셔너리는 key값이 문자열, value값이 정수입니다.
10진수 -> N진수 변환 (간단)
내장 함수를 사용한다면 다음과 같이 변경할 수 있습니다.
bin(42)
# '0b101010'
oct(42)
# '0o52'
hex(42)
# '0x2a'
N진수 -> 10진수 변환 (간단)
int('1011', base=2) # 11
그냥 문자열 값을 앞에 두고, base 값을 지정해주면 10진수로 잘 변환이 됩니다.
'Algorithm' 카테고리의 다른 글
[파이썬] 프로그래머스 - [1차] 뉴스 클러스터링 (0) | 2022.06.22 |
---|---|
[파이썬] 프로그래머스 - 신고 결과 받기 (0) | 2022.06.22 |
Python 이진 탐색 템플릿 코드 (0) | 2021.08.24 |
Python 코딩테스트 대비 자료구조 및 기능 정리 (0) | 2021.08.18 |
Python 코딩테스트 대비 문법들 정리 (0) | 2021.08.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스레드
- sharedmemory
- Swift
- 부캠
- swiftsoup
- isNetworkAccessAllowed
- PHAsset
- setBackgroundColor
- 운영체제
- 개발대외활동
- 멀티프로세스
- 디프만
- 개발동아리
- webcrawl
- ios
- OS
- 프로세스간통신
- WKUIDelegate
- URLComponents
- returnKey
- Xcode
- rxcocoa
- optional
- 프로세스
- PHImageRequestOptions
- cs
- RxSwift
- 슈퍼스칼라
- 스냅킷
- 쓰레드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함