인천의 자유인

[Python] 이진수 더하기 - 프로그래머스 본문

Python/Python코딩테스트

[Python] 이진수 더하기 - 프로그래머스

Youngook 2024. 5. 11. 09:15
728x90
반응형

 

나의 문제 풀이

def solution(bin1, bin2):
    answer = ''
    number = 0
    bin1 = "".join(reversed(bin1))
    bin2 = "".join(reversed(bin2))
    for i in range(len(bin1)):
        if bin1[i] == '1':
            number += 2**i
        if bin2[i] == '1':
            number += 2**i
    div = 0
    while True:
        div = number%2
        number = number//2
        if div == 0:
            answer += '0'
        elif div == 1:
            answer += '1'
        if number == 0:
            break
    return "".join(reversed(answer))

 

이진수 변환을 시작하기 전에 변환을 쉽게 하기 위해 문자열을 거꾸로 뒤바꿉니다.

바꿨으면 이제는 문자열 안에 1이 들어갔을 경우 2의 i승을 더하게 합니다.(같은 for문 안에 다 집어 넣은 것은 어차피 문자열 길이가 같기 때문에 문제 없을 거라 판단하여 작성했습니다.)

변환하여 총합이 구해지면 이제는 다시 이진수로 변환을 하는 과정이 필요합니다.

계속 2로 나누고 나머지를 구하면서 이진수를 모양을 완성해 나갑니다. 이 작업이 끝날 시에 이진수가 거꾸로 되어있기 때문에 다신 문자열을 거꾸로 만들어서 완성시킵니다. 

728x90
반응형