chldkato

프로그래머스 [1차] 비밀지도 (파이썬) 본문

프로그래머스

프로그래머스 [1차] 비밀지도 (파이썬)

chldkato 2020. 3. 3. 16:01

https://programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 공백(" ) 또는벽(#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 지도 1과 지도 2라고 하자. 지도 1

programmers.co.kr

1. 2개의 지도를 or 비트 연산으로 더하여 비밀 지도를 만든다

2. 지도를 배열로 출력하기 위해서 1 << n과 or 연산을 한다

3. 맨 앞은 자릿수를 맞추기 위한 1이므로 제외하고 값이 1이면 #, 아니면 공백으로 바꾼 후 출력한다

def solution(n, arr1, arr2):
    arr3 = [0 for _ in range(n)]
    for i in range(n):
        arr3[i] = arr1[i] | arr2[i]
    a = 1 << n
    ans = []
    for i in range(n):
        x = a | arr3[i]
        s = []
        for i, w in enumerate(format(x, 'b')):
            if i == 0:
                continue
            if w == '1':
                s.append('#')
            else:
                s.append(' ')
        ans.append(''.join(s))
    return ans

Comments