https://school.programmers.co.kr/learn/courses/30/lessons/120885
[문제 설명]
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- return 값은 이진수를 의미하는 문자열입니다.
- 1 ≤ bin1, bin2의 길이 ≤ 10
- bin1과 bin2는 0과 1로만 이루어져 있습니다.
- bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.
[나의 풀이]
def solution(bin1, bin2):
bin1 = bin1.zfill(len(bin2))
bin2 = bin2.zfill(len(bin1))
carry = 0
result = []
for i in range(len(bin1)-1,-1,-1):
sum_ = int(bin1[i]) + int(bin2[i]) + carry
result.append(str(sum_ % 2))
carry = sum_ // 2
if carry:
result.append('1')
return ''.join(result[::-1])
[다른 풀이]
1)
def solution(bin1, bin2):
return bin(int(bin1, 2) + int(bin2, 2))[2:]
2)
def solution(bin1, bin2):
answer = 0
bin1_size = len(bin1)
bin2_size = len(bin2)
sum = 0
for i in bin1:
sum += int(i) * (2 ** (bin1_size - 1))
bin1_size -= 1
for i in bin2:
sum += int(i) * (2 ** (bin2_size - 1))
bin2_size -= 1
answer = str(bin(sum))[2:]
return answer
3)
def solution(bin1, bin2):
bin1, bin2 = bin1[::-1], bin2[::-1]
i, carry = 0, 0
output = ""
while i < len(bin1) or i < len(bin2) or carry:
op1 = bin1[i] if i < len(bin1) else '0'
op2 = bin2[i] if i < len(bin2) else '0'
result = int(op1) + int(op2) + carry
output += str(result % 2)
carry = result // 2
i += 1
return output[::-1]
'프로그래머스 > 파이썬_입문' 카테고리의 다른 글
다음에 올 숫자 (1) | 2025.01.15 |
---|---|
치킨 쿠폰 (0) | 2025.01.15 |
A로 B 만들기 + Counter() (0) | 2025.01.13 |
k의 개수 (0) | 2025.01.12 |
로그인 성공? +dict() (0) | 2025.01.11 |