네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.
네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.
입력으로 지도의 한 변 크기 n
과 2개의 정수 배열 arr1
, arr2
가 들어온다.
원래의 비밀지도를 해독하여 '#'
, 공백
으로 구성된 문자열 배열로 출력하라.
def solution(n, arr1, arr2):
map_total = [f'{arr1[i]|arr2[i]:016b}'[-n:] for i in range(0, n)] #16자리의 2진수로 만들어 n자리 2진수로 슬라이싱
answer = []
for mt in map_total:
line = mt.replace('0',' ')
line = line.replace('1', '#')
answer.append(line)
return answer
def solution2(n, arr1, arr2): #rjust사용
map_total = [f'{arr1[i]|arr2[i]:b}'.rjust(n, '0') for i in range(0, n)]
answer = [mt.replace('0',' ').replace('1', '#') for mt in map_total]
return answer
map_total = [n자리수의 2진수 배열]
최종 지도는 지도1과 지도2의 비트연산 or
의 결과로 구한다.
최종 지도의 0
은 공백
으로 1
은 #
으로 변환하여 반환한다.
2진수의 자릿수 표시에 다양한 방법이 있었다.. n
을 어떻게 적용할지 몰라서 그냥 최대 16자리로 만들어서 n
만큼 잘랐었는데 rjust
를 사용하면 간편했다.