프로그래머스/코딩테스트 입문(Lv. 0)

이진수 더하기

아몬드바 2023. 7. 26. 19:34
728x90

문제 설명
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.

 

제한사항
return 값은 이진수를 의미하는 문자열입니다.
1 ≤ bin1, bin2의 길이 ≤ 10
bin1과 bin2는 0과 1로만 이루어져 있습니다.
bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.

 

입출력 예


이번문제는 꽤 다양한 방법으로 풀었고 파이썬 문법에 현타가 왔다..

def solution(bin1, bin2):
    answer = ''
    carry = 0
    bin1 = bin1.zfill(max(len(bin1), len(bin2)))
    bin2 = bin2.zfill(max(len(bin1), len(bin2)))
    
    for i in range(len(bin1) - 1, -1, -1):
        sum = int(bin1[i]) + int(bin2[i]) + carry
        carry = sum // 2
        answer = str(sum % 2) + answer
    
    if carry:
        answer = "1" + answer
        return answer
    else:
        return answer
def solution(bin1, bin2):
    # 테케 5번에서 시간초과로 풀이 실패
    answer = ''
    Decimal = 0
    for i, j  in enumerate(range(len(bin1)-1, -1, -1)):
        Decimal += int(bin1[j]) * 2**i

    for i, j  in enumerate(range(len(bin2)-1, -1, -1)):
        Decimal += int(bin2[j]) * 2**i
    
    while True:
        if Decimal == 1:
            answer += str(Decimal)
            break
        if Decimal % 2 == 0:
            answer += str(Decimal % 2)
            Decimal = Decimal // 2
        elif Decimal % 2 == 1:
            answer += str(Decimal % 2)
            Decimal = Decimal // 2

    su = list(reversed(answer))
    return "".join(su)
def solution(bin1, bin2): 
    answer = bin(int(bin1,2) + int(bin2,2))[2:]
    return answer
728x90

'프로그래머스 > 코딩테스트 입문(Lv. 0)' 카테고리의 다른 글

연속된 수의 합  (0) 2023.07.27
문자열 밀기  (0) 2023.07.26
옹알이 (1)  (0) 2023.07.25
치킨 쿠폰  (0) 2023.07.25
로그인 성공?  (0) 2023.07.24