[プログラマー]秘密の地図Lv1 - Python


[プログラマー]秘密の地図Lv1
私の答え
def solution(n, arr1, arr2):
    a = []
    for i in range(n):
        s = ''
        arr1[i] = format(int(arr1[i]), 'b').zfill(n)
        arr2[i] = format(int(arr2[i]), 'b').zfill(n)

        for j in range(len(arr1)):
            if arr1[i][j] == '1' or arr2[i][j] == '1':
                s += '#'
            else:
                s += ' '
        a.append(s)

    return a
  • 入力の周りの配列は、バイナリ形式に変換される.前の0部分はフォーマットが省略されているため、zfillを使用して前の部分を対応する文字数で0に塗りつぶします.
  • 変換後のバイナリ形式を使用するか、演算を行う必要があるため、そのうちの1つが1であれば、2が1でない場合は、文字列にスペースを追加し、aリストに入れる.
  • 他人の答え&感じ
    Pythonベース演算子関数を使用すると、より簡潔に記述できます.
    zipを使用すると、1つのfor文で2つのオブジェクトを受信し、1つの関数を使用してバイナリ値binに変換できます.
    def solution2(n, arr1, arr2):
         answer = []
         for i,j in zip(arr1,arr2):
             a12 = str(bin(i|j)[2:])
             a12=a12.rjust(n,'0')
             a12=a12.replace('1','#')
             a12=a12.replace('0',' ')
             answer.append(a12)
         return answer
    ただしbinを使うと0 bの文字が付くので[2]で削除します.