[프로그래머스] Python [1차]


문제 설명

Neo는 Frodo가 보통 비상 자금을 어디에 숨기는지 알려주는 비밀 지도를 받았습니다. 하지만 이 비밀 지도는 숫자로 암호화되어 있기 때문에 위치를 파악하기 위해서는 복호화를 거쳐야 합니다. 운 좋게도 카드 코드를 해독하는 방법에 대한 지침이 담긴 메모도 찾았습니다. Neo가 Frodo의 비상 자금을 얻을 수 있도록 비밀 지도를 해독하는 데 도움이 되는 프로그램을 작성하세요.

  1. 카드 한 면의 길이는 n-제곱 배열의 형태로 각 셀은 “방”(” “) 또는 “벽”(“#”)의 두 가지 유형으로 구성됩니다.
  2. 전체 지도는 ​​두 개의 지도를 겹쳐서 얻을 수 있습니다. 각각 “카드 1″과 “카드 2″라고 부르겠습니다. 맵 1 또는 맵 2에서 벽인 부분은 전체 맵에서도 벽입니다. 지도 1과 지도 2 모두에서 비어 있는 영역은 전체 지도에서도 비어 있습니다.
  3. 맵 1과 맵 2는 각각 정수 배열로 인코딩됩니다.
  4. 뒤섞인 배열은 지도의 각 수평선에서 벽 부분을 식별합니다. 1, 빈 부분 0으로 인코딩했을 때 얻은 이진수에 해당하는 값의 배열입니다.

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

Programmer.co.kr


소스 코드

def solution(n, arr1, arr2):
    answer = ()
    arr = ()
    for i in range(n):
        arr.append(bin(arr1(i) | arr2(i))(2:).zfill(n))

    for i in arr:
        answer.append(i.replace("0", " ").replace("1", "#"))

    return answer

해결 방법

일단 이 문제를 예전에 자바로 풀려고 했었는데 제가 풀지 못한 코드였는데 파이썬으로 그렇게 빨리 풀 수가 없네요!

어른이 된 기분이야

그럼에도 불구하고! 비트 연산으로 이 문제를 해결하면 좋을 것 같습니다! 바이너리 라인 바이 비트 연산을 출력하고 0을 공백으로, 1을 #! 그러나 여기에 문제가 있습니다! 처음에 계속 공백 처리가 이상했는데 Python zfill()라는 방법이 있습니다! n을 입력하면 앞에 0을 넣어 n자리를 얻습니다! 기억하다