[プログラマー]秘密地図/17681号/Python/2018 KAKAO BLIND RECRUITMENT


💡質問する


ニオは秘密の地図を手に持って、プロドが普段私房のお金を隠している場所を教えた.しかし、この秘密地図はデジタル暗号化されており、位置を確認するために解読が必要です.幸いなことに、地図のパスワードを解読する方法が書かれたメモも見つかった.
  • 地図は、エッジ長nの正方形の配列形式であり、各セグメントは「空白」("")または「壁」("#")の2種類から構成されています.
  • 全図は、2つの地図を重ね合わせることによって得ることができる.それぞれ「地図1」と「地図2」と言います.地図1または地図2のいずれかが壁である部分は、地図全体でも壁である.地図1も地図2も空白の部分であり、地図全体においても空白である.
  • 「地図1」と「地図2」はそれぞれ整数配列で暗号化されている.
  • 暗号化された配列は、地図の各横線において、壁部分を1に符号化し、空白部分を0に符号化したときのバイナリ数の配列である.

    ニオがフロドの私房金を手に入れるために、秘密地図のパスワードを解読するのに役立つプログラムを作成しました.
  • 入力フォーマット


    地図に入るエッジサイズnと2つの整数配列arr 1とarr 2を入力します.
  • 1 ≦ n ≦ 16
  • arr 1,arr 2は長さnの整数配列である.
  • 整数配列の各要素xがバイナリ数に変換されたときの長さはn以下である.すなわち、0≦x≦2 n−1を満たす.
  • 出力フォーマット


    元の秘密地図を復号し、「#」と出力し、スペースからなる文字列の配列です.

    にゅうしゅつりょく


    n 5 arr 1[9,20,28,18,11]arr 2[30,1,21,17,28]出力[###############]、「###########」、「################」
    n 6 arr 1[46,33,33,22,31,50]arr 2[27,56,19,14,14,10]出力[######################################################################################

    📖私が書いたコード

    def solution(n, arr1, arr2):
        answer = []
        for i,j in zip(arr1,arr2):
            a = str(bin(i|j)[2:].zfill(n))  
            #하나만 1이어도 1이므로 bin(i|j)
            a=a.replace("1","#")
            a=a.replace("0"," ")
            answer.append(a)
        return answer
    質問元:https://programmers.co.kr/learn/courses/30/lessons/17681