https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그램 제작자
코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.
Programmer.co.kr
문제 설명
Neo는 Frodo가 보통 비상 자금을 어디에 숨기는지 알려주는 비밀 지도를 받았습니다. 하지만 이 비밀 지도는 숫자로 암호화되어 있기 때문에 위치를 파악하기 위해서는 복호화를 거쳐야 합니다. 운 좋게도 카드 코드를 해독하는 방법에 대한 지침이 담긴 메모도 찾았습니다.
- 카드 한 면의 길이는 n-제곱 배열의 형태로 각 셀은 “방”(” “) 또는 “벽”(“#”)의 두 가지 유형으로 구성됩니다.
- 전체 지도는 두 개의 지도를 겹쳐서 얻을 수 있습니다. 각각 “카드 1″과 “카드 2″라고 부르겠습니다. 맵 1 또는 맵 2에서 벽인 부분은 전체 맵에서도 벽입니다. 지도 1과 지도 2 모두에서 비어 있는 영역은 전체 지도에서도 비어 있습니다.
- 맵 1과 맵 2는 각각 정수 배열로 인코딩됩니다.
- 뒤섞인 배열은 지도의 각 수평선에서 벽 부분을 식별합니다. 1, 빈 부분 0으로 인코딩했을 때 얻은 이진수에 해당하는 값의 배열입니다.
Neo가 Frodo의 비상 자금을 얻을 수 있도록 비밀 지도를 해독하는 데 도움이 되는 프로그램을 작성하세요.
써 내려 가다
처음에는 10진수를 2진수로 변환하여 더하고 0인지 아닌지를 비교하여 ” “와 “#”으로 바꾸는 것이 가능하지 않을까 생각했습니다.
먼저 첫 번째 오류는 변환 후 처음에 길이 변경이 0에서 발생했다는 것입니다.
두 번째 버그는 0이 채워지지 않았기 때문에 두 번째 샷의 거리가 일치하지 않는다는 것입니다.
다시 생각해보니 첫 번째 오류만 수정하면 두 번째 오류는 자동으로 수정될 것 같아서 0을 채우는 방법을 알아보다가 n과 비교해서 채워주는 함수를 찾았습니다. 충분한. (‘지필’)
zfill과 함께 ‘or’ 함수를 직접 사용했기 때문에 0과 1만 비교하면 되는 문제였습니다.
def solution(n, arr1, arr2):
answer = ()
for i in range (0,n):
enc = format(arr1(i) | arr2(i), 'b').zfill(n)
enc = enc.replace('0',' ').replace('1','#')
answer.append(enc)
return answer
