
[문제]
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 내장 함수를 이용하면 큰 수도 쉽게 다룰 수 있었다.
이는 파이썬의 동적 타이핑 덕분이다. 파이썬은 변수의 크기를 동적으로 할당하는 언어로, 필요에 따라 메모리를 동적으로 할당하고 해제하는 특성이 있다. 이런 유연성 덕분에 큰 수를 다루는 데도 무리가 없는것이다.