글 작성자: 택시 운전사
반응형

🗺 비밀지도 문제 풀어보기


😃 나의 코드

def solution(n, arr1, arr2):
    answer = []
    for decimal1, decimal2 in zip(arr1, arr2):
        binary12 = str(bin(decimal1 | decimal2))[2:]
        binary12 = '0' * (n - len(binary12)) + binary12
        binary12 = binary12.replace('1', '#')
        binary12 = binary12.replace('0', ' ')
        answer.append(binary12)
    return answer

비트연산(Bitwise Operation)을 이용하면 쉽게 풀 수 있는 문제입니다. 문제 중간에 둘 중 하나가라는 말이 힌트가 될 수 있겠네요. 풀이 과정은 다음과 같습니다. 두 지도의 배열을 zip을 이용하여 각각의 배열에서 원소를 하나씩 꺼냅니다. 이제 이 10진 데이터를 OR로 비트 연산합니다. 각 지도의 데이터는 10진법으로 암호화 되어 있기 때문에 이를 2진법으로 바꾸는 데 여기서는 bin()을 이용합니다. bin()을 이용하게 되면 앞에 0b라는 문자가 추가로 붙습니다 따라서 적절하게 문자열을 잘라줍니다. 이진 데이터의 길이가 지도의 한 변의 길이와 같아야하기 때문에 전체 길이가 n이 되도록 앞에 0을 추가해줍니다. 이제 이 이진법으로 된 데이터를 출력 형태에 맞게 문자열의 replace() Method를 이용하여 변환한 뒤 각각 answer배열에 append()해주면 문제가 마무리됩니다.

Written with StackEdit.


반응형