본문 바로가기
알고리즘/프로그래머스

[Python] 비밀지도

by 컴공맨 2021. 2. 28.
 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr


풀이

파이썬의 format()을 사용하여 비트연산을 한 결과를 이진수로 바꾸어 문자열로 저장해 주었습니다.

이때, 이진수의 길이는 n개를 필요로 하지만 비트의 앞이 0일 경우 0을 빼고 1인 부분부터 이진수를 만들기 때문에 zfill()을 이용해 0이 빠진 부분에 다시 0을 채웠습니다.

마지막으로 정규표현식 re의 sub()를 사용하여 비트가 1인 부분을 '#' 으로 0인 부분을 ' ' 으로 바꾸어 해결했습니다.

 

이진수로 바꿀때 bin()을 사용하여 이진수로 바꾸어 문자열로 저장할 수 있습니다. 또한, zfill()이 아닌 rjust()를 사용하여 0을 채울 수 있습니다.


코드

import re


def solution(n, arr1, arr2):
    answer = []

    for i in range(n):
        map = "{0:b}".format(arr1[i] | arr2[i]).zfill(n)
        
        # map = str(bin(arr1[i] | arr2[i]))[2:].rjust(n, '0')
        # map = str(bin(arr1[i] | arr2[i]))[2:].zfill(n)

        # map = format(arr1[i] | arr2[i], 'b').rjust(n, '0')
        
        map = re.sub('1', '#', map)
        map = re.sub('0', ' ', map)

        answer.append(map)

    return answer

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[Python] 다트 게임  (0) 2021.03.07
[Python] 실패율  (0) 2021.03.06
[Python] 키패드 누르기  (0) 2021.02.27
[Python] 2016년  (0) 2021.02.21
[Python] K번째수  (0) 2021.02.20