67. Add Binary

meta fring·2023년 8월 3일
0

https://leetcode.com/problems/add-binary

Given two binary strings a and b, return their sum as a binary string.

 

Example 1:

Input: a = "11", b = "1"
Output: "100"
Example 2:

Input: a = "1010", b = "1011"
Output: "10101"
 

Constraints:

1 <= a.length, b.length <= 104
a and b consist only of '0' or '1' characters.
Each string does not contain leading zeros except for the zero itself.

a와 b를 정수로 바꿔서 더해주고, 이걸 리스트로 만들어서 리버스해준다.
왜냐면 1의 자리부터 계산하는 것이 맞으니까...
그리고 이를 순회하며 검사한다.
값이 2인 경우에 0으로 만들어주고, 다음 인덱스에 1을 더해준다.
만약 다음 인덱스가 2인 경우에는 3이 되니까, 3인 경우도 작업해줘야 한다.
3인 경우에는 1로 만들어주기.
그리고 마지막 인덱스에 2나 3이면 뒤에 1을 추가해준다.
이 계산 결과를 다시 뒤집어서 문자열로 만들어 리턴한다.

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        a_int = int(a)
        b_int = int(b)
        ans_int = a_int + b_int
        ans = str(ans_int)
        ans_list = list(ans)
        ans_r = ans_list[::-1]
        for index, value in enumerate(ans_r):
            if value == '2':
                ans_r[index] = '0'
                if index == len(ans_r) - 1:
                    ans_r.append('1')
                else:
                    if ans_r[index+1] == '0':
                        ans_r[index+1] = '1'
                    elif ans_r[index+1] == '1':
                        ans_r[index+1] = '2'
                    else:
                        ans_r[index+1] = '3'
            elif value == '3':
                ans_r[index] = '1'
                if index == len(ans_r) - 1:
                    ans_r.append('1')
                else:
                    if ans_r[index+1] == '0':
                        ans_r[index+1] = '1'
                    elif ans_r[index+1] == '1':
                        ans_r[index+1] = '2'
                    else:
                        ans_r[index+1] = '3'
        result_list = ans_r[::-1]
        result = ''.join(result_list)
        return result

흠...
어찌됐든 서울로 오긴 했는데...
다음에 다시 연구해봐야겠다ㅋㅋ

profile
긍정적인 개발자

0개의 댓글