728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/120885
내 풀이
def solution(bin1, bin2):
a = int(bin1, 2)
b = int(bin2, 2)
return bin(a + b)[2:]
이진수를 다루는 부분은 잘 몰라서 다른 사람의 풀이를 보고 풀었다.
int함수를 이용해 먼저 bin1, bin2을 정수형 숫자로 변환한다.
그 후, 합을 구한 후, 2진수로 변환하기 위해 bin( )을 사용한다.
bin(a + b)의 결과는 "0b101"과 같이 나오기 때문에 2번째 인덱스 부터의 값을 반환한다.
N진수 -> 10진수
int 함수의 2번째 인자를 활용해서 N 진수의 문자열을 정수형(int) 숫자로 형변환할 수 있다.
# 2진수 문자열 -> 10진수 정수로 변경
int('문자', 2)
# 8진수 문자열 -> 10진수 정수로 변경
int('문자', 8)
# 16진수 문자열 -> 10진수 정수로 변경
int('문자', 16)
10진수 -> 2, 8, 16진수
# 10진수 -> 8진수 문자열
oct(11)
# 0o13
# 10진수 -> 16진수 문자열
hex(11)
# 0xb
# 10진수 -> 2진수 문자열
bin(11)
# 0b1011
10진수 -> N진수
10진수에서 2, 8, 16진수 외의 다른 진법으로 변환은 코드 작성이 필요하다.
def solution(n, q):
rev_base = ''
while n > 0:
n, mod = divmod(n, q)
rev_base += str(mod)
return rev_base[::-1]
# 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력
print(solution(45, 3))
# 1200
N진수 -> N진수
위의 코드를 활용하여 N진수를 10진수로 변경한 후, 다시 N진수로 변경
print(solution(int('c',16),4)) # 16진수인 C를 4진수로 바꾸는것
# 30
print(solution(int('4',6),3)) # 6진수인 4를 3진수로 바꾸는것
# 11
print(solution(int('21',3),7)) # 3진수인 21을 7진수로 바꾸는것
# 10
print(solution(int('15',9),5)) # 9진수인 15를 5진수로 바꾸는것
# 24
728x90
'코딩테스트 > PYTHON' 카테고리의 다른 글
[프로그래머스][PYTHON] Lv. 0 치킨 쿠폰 (0) | 2024.03.25 |
---|---|
[프로그래머스][PYTHON] Lv. 0 등수 매기기 (0) | 2024.03.20 |
[프로그래머스][PYTHON] Lv. 0 삼각형의 완성조건 (2) (3) | 2024.03.19 |
[프로그래머스][PYTHON] Lv. 0 저주의 숫자 3 (0) | 2024.03.19 |
[프로그래머스][PYTHON] Lv. 0 k의 개수 (0) | 2024.03.19 |