Python/알고리즘 문제 풀이

[코테] 이진수 더하기

마이구미+ 2023. 4. 24. 10:18

<로직 고민>

  • 처음엔...문자열을 리스트로 변환해서 각 인덱스마다 계산을 해야 하나? 하는 생각이 먼저 들었다
  • 근데 문제는 자릿수가 다른 경우, 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)

<완성된 코드>

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 쓸 필요도 없이 슬라이싱을 하면 되는 거였다니...!!
  • 심지어 슬라이싱은 내 블로그에 정리도 했었는데..매번 이렇게 필요한 때에 까먹고 못 쓴다