<로직 고민>
- 처음엔...문자열을 리스트로 변환해서 각 인덱스마다 계산을 해야 하나? 하는 생각이 먼저 들었다
- 근데 문제는 자릿수가 다른 경우, 1+1=10이 되어서 올림을 하는 경우 어떻게 표현해야 하나 싶어서 검색을 했다
- 이진수 덧셈 함수가 있진 않을까 싶어서 그러다 이진수를 십진수로, 십진수를 이진수로 변환하는 함수가 있다는 것을 알게 되었다
- 두 이진수를 일단 십진수로 변환한 후에 두 수를 더하고 다시 이진수로 변환한 값을 리턴하면 될 것 같았다
def solution(bin1, bin2):
answer = ''
bin_to_decimal1 = int(bin1, 2)
bin_to_decimal2 = int(bin2, 2)
answer = bin_to_decimal1 + bin_to_decimal2
return bin(answer)
- 이렇게 하니까 앞에 0b가 붙어서 정답이 아니라고 나온다
- 또 열심히 검색을.....
- [Python] 10진수 숫자를 2진수 숫자로 바꿔주기 — 조무래기 코딩 (tistory.com)
- 여기에서 답을 찾았다 format(answer, 'b')를 하면 되는 거였다
<완성된 코드>
def solution(bin1, bin2):
answer = ''
bin_to_decimal1 = int(bin1, 2)
bin_to_decimal2 = int(bin2, 2)
answer = bin_to_decimal1 + bin_to_decimal2
return format(answer, 'b')
print(solution("10", "11")) # 101
print(solution("1001", "1111")) # 11000
<다른 사람 풀이>
- 천재풀이1
def solution(bin1, bin2):
answer = bin(int(bin1,2) + int(bin2,2))[2:]
return answer
- 슬라이싱 빼고 같은 풀이법인데 축약 능력이 대단하다...!
- 그리고 format 쓸 필요도 없이 슬라이싱을 하면 되는 거였다니...!!
- 심지어 슬라이싱은 내 블로그에 정리도 했었는데..매번 이렇게 필요한 때에 까먹고 못 쓴다