【競技プログラミング】「Add Binary」with Python | LeetCode #67

Python

こちらは「Add Binary」のPythonによる解答例となっております。この問題は、2つの二進数を足し合わせ、その和を二進数で返す問題です。

問題

2つの二進数 a と b が与えられたとき、それらを足し合わせた結果を二進数で返します。

  • ab の長さは、1以上 10^4以下です。
  • ab は、二進数形式で与えられます。
  • 答えは、二進数形式で返します。

解法

この問題は、Pythonの組み込み関数を用いた1つのアプローチがあります。Pythonの bin 関数は、整数を二進数に変換することができます。この問題では、まず a と b を整数に変換し、足し合わせます。そして、 bin 関数を用いて、二進数に変換した結果を返します。

Pythonコード

以下のコードが、「二進数の足し算」を解くためのPythonプログラムとなります。

### Function ##################################################################

def solve(num=0):
    
    solver  = Solution().addBinary
    
    if 1 <= num <= Input().input: id_LIST = [num]
    else: id_LIST = [id+1 for id in range(Input().input)]
    
    for id in id_LIST:
        data    = Input(id)
        ans     = solver(data.a, data.b)
        result  = "OK" if ans==data.ans else "NG"
        print(f"[{str(id).zfill(3)}] {result}")

### Class #####################################################################

class Solution(object):
    def addBinary(self, a, b):
        """
        :type a: str
        :type b: str
        :rtype: str
        """
        return bin(int(a,2)+int(b,2))[2:]

#==============================================================================

class Input:
    
    def __init__(self, num=0):
        
        if num == 1:
            self.a = "11"
            self.b = "1"
            self.ans    = "100"
        
        elif num == 2:
            self.a = "1010"
            self.b = "1011"
            self.ans    = "10101"

        else:
            self.input  = 2

### Main ######################################################################

if __name__ == "__main__":

    solve()

###############################################################################