Add Binary

Yeonu Heo 허연우·2024년 3월 6일

알고리즘 문제풀이

목록 보기
19/26

Add Binary

[문제]
Given two binary strings a and b, return their sum as a binary string.

[입력 조건]
1 <= a.length, b.length <= 10000
a and b consist only of '0' or '1' characters.
Each string does not contain leading zeros except for the zero itself.

[내 풀이]

class Solution:
    def addBinary(self, a: str, b: str) -> str:
    def twoToTenConvertor(target: str):
            result = 0
            if target == "0":
                return 0
            for i in range(len(target)):
                temp = (2 ** i) * int(target[len(target) - i - 1])
                result = result + temp
            return result

    def tenToTwoConvertor(target: int):
        result = ""
        if target == 0:
            return "0"
        while target > 0:
            binary = target % 2
            target = target // 2
            if binary == 0:
                result = "0" + result
            else:
                result = "1" + result
        return result


      return (format(int(a,2) + int(b,2),"b"))

39번 문제에 막히고 리프레시나 해볼까 하고 집어든 easy 난이도의 문제였지만, 더 막막했다.

파이썬 문제를 풀다 보면 때때로 우리를 곤란하게 만드는 장애물들이 있다. 그 중 하나가 바로 이진수 변환 문제.

처음에는 이진수를 직접 십진수로 변환하고, 이를 더한 후에 다시 이진수로 변환하는 방식을 생각했지만 이 방식에는 한 가지 큰 문제가 있었습니다.

문제는 이진수 문자열의 길이가 10,000까지 될 수 있다는 것이다. 이런 큰 수를 직접 처리하려면 오버플로우 같은 문제를 만나게 된다. 이 때문에 다른 방법을 찾아보게 되었다.

그리고 발견한 것이 바로 파이썬의 진수 변환 기능으로 파이썬의 int와 format 내장 함수를 이용하면 큰 수도 쉽게 다룰 수 있었다.

이는 파이썬의 동적 타이핑 덕분이다. 파이썬은 변수의 크기를 동적으로 할당하는 언어로, 필요에 따라 메모리를 동적으로 할당하고 해제하는 특성이 있다. 이런 유연성 덕분에 큰 수를 다루는 데도 무리가 없는것이다.

[출처]
https://leetcode.com/problems/add-binary/description/

profile
Learn & Travel , 배움을 멈추는 순간 굴러떨어진다

0개의 댓글