이진수 더하기 - Python

2023. 9. 30. 02:51공부/📝 프로그래머스

def solution(bin1, bin2):
    answer = ''
    carry = 0
    if bin1 == "0":
        return bin2
    elif bin2 == "0":
        return bin1
    elif  len(bin1) > len(bin2):
        bin2 = "0" * (len(bin1) - len(bin2)) + bin2
    elif len(bin1) < len(bin2):
        bin1 = "0" * (len(bin2) - len(bin1)) + bin1

    for i in range(1, len(bin1) + 1):
        add_list = sum([int(bin1[-i]), int(bin2[-i]), carry])
        # print(f"{add_list} {bin1} {bin2} {answer}")
        if add_list == 0:
            answer += "0"
            carry = 0
        elif add_list == 1:
            answer += "1"
            carry = 0
        elif add_list == 2:
            answer += "0"
            carry = 1
        elif add_list == 3:
            answer += "1"
            carry = 1
    if carry == 1:
        answer += "1"
    return answer[::-1]

# Test Cases
print(solution("10", "11"))
print(solution("1001", "1111"))
print(solution("1001", "11"))
print(solution("1001", "0"))

  추석이라 친구들과 이야기하며 만들어서 깔끔하지 않는 것 같습니다. 나중에 다시 풀어야겠네요.

 


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

  괜찮은 풀이로 보입니다.

 


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

  파이썬은 이 메소드를 지원했음을 잊었네요.

 


 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

'공부 > 📝 프로그래머스' 카테고리의 다른 글

영어가 싫어요 - Python  (0) 2023.09.30
7의 개수 - Python  (0) 2023.09.30
한 번만 등장한 문자 - Python  (0) 2023.09.30
가까운 수 - Pyhon  (0) 2023.09.30
숨어있는 숫자의 덧셈 (2) - Python  (0) 2023.09.30