이진수 더하기.python

Haks.·2024년 12월 21일
0

Study

목록 보기
18/65

문제 설명

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

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

입출력 예
bin1	 bin2	  result
"10"	 "11"	  "101"
"1001"	 "1111"	  "11000"

풀이

def solution(bin1, bin2) :
	# 뒤에서 부터 해야 차례차례 더하기 가능
	bin1, bin2 = bin1[::-1], bin2[::-1]
    # 인덱스, 이진수에서 1+1 이면 앞수가 1이 추가되기에 남는거 처리
    i, carry = 0, 0
    output = ''
    # carry가 존재하면 다음자리수 1증가
    while i < len(bin1) or i < len(bin2) or carry :
    	# bin[i]의 값이 있으면 반환 아니면 '0' 더했을때 어차피 없을거니까
        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]

bin()함수를 이용한 풀이

def solution(bin1, bin2) :
	a = int(bin1,2)
    b = int(bin2,2)
    return bin(a+b)[2:]

0개의 댓글

관련 채용 정보