코테 공부/python
[프로그래머스] Python 이진수 더하기
sweet-po
2023. 6. 13. 14:08
https://school.programmers.co.kr/learn/courses/30/lessons/120885
내풀이
분명 이진수 계산해주고 변환해주는 python 함수가 있을 거 같았지만 검색 안해보고
아집인지 고집인지 노가다로 한번 구현해보자 하는 마음으로 구현
def solution(bin1, bin2):
sumbi = str(int(bin1) + int(bin2))
for i in range(1, len(sumbi)):
if int(sumbi[len(sumbi) - i]) >= 2:
sumbi = sumbi[:len(sumbi) - i - 1] + str(int(sumbi[len(sumbi) - i - 1]) + 1) + str(int(sumbi[len(sumbi) - i]) % 2) + sumbi[len(sumbi) - i + 1:]
if int(sumbi[0]) >= 2:
sumbi = '1' + str(int(sumbi[0]) % 2) + sumbi[1:]
return sumbi
타풀이
def solution(bin1, bin2):
answer = bin(int(bin1,2) + int(bin2,2))[2:]
return answer
int() 함수
밑(base) 사용하기
int(value, base) 정수로 변환할 값과 밑
default로 value = 0, base = 10 (base는 2~36사이)
int('0b101010', 2) #42
int('0o52', 8) #42
int('0x2a', 16) #42
참고
파이썬은 기본적으로 10진수 형태로 숫자 표현. 다른 진수로 표현하려면 접두어 붙여주어야함
2진수 : 0b
8진수 : 0o
16진수 : 0x
42 == 0b101010 #True
42 == 0o52 #True
42 == 0x2a #True
16진수에서 뒤에 붙은 a는 10 인듯 하다....?
bin(숫자) oct(숫자 ) hex(숫자) 함수를 통해 숫자를 각 진수 형태의 문자열로 변환 가능
bin(42) #'0b101010'
oct(42) #'0o52'
hex(42) #'0x2a'
bin(0b101010) #'0b101010'
oct(0b101010) #'0o52'
hex(0b101010) #'0x2a'
str(0b101010) #'42'
format()
format(42, 'b') #'101010'
format(42, 'o') #'52'
format(42, 'x') #'2a'
format(42, 'X') #'2A'
format(42, 'd') #'42'
format(42, '#b') #'0b101010'
format(42, '#o') #'0o52'
format(42, '#x') #'0x2a'
format(42, '#X') #'0X2A'
출처 : https://www.daleseo.com/python-int-bases/