코딩테스트

[프로그래머스] lv.1 [1차]비밀지도

꼬몽울 2021. 7. 9. 14:04

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

 

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

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

programmers.co.kr

위의 문제를 읽었을때 딱 논리 게이트를 생각하지 못한다면 아마 문제를 풀기가 어려울 것이다

 

먼저, 2진수를 비교하는 방법을 생각한다.

파이썬에는 고맙게도 bin(n)과 format(n,'b')의 기능이 있다.

둘중에 무엇을 쓸까 하다가 bin(n)을 쓰게되면 이진수 앞에 0b가 붙어버려서 제거를 해줘야 하기때문에 

format(n,'b')를 쓰기로했다.

그리고 2를 이진수로 표현하면 10이되는데 앞에 자릿수 만큼 0을 추가 해야하는데 여기서 2가지 방법이 있다.

zfill(n)과 rjust(n,'0') 지금 이 문제는 0을 채우는 것이기떄문에 zfill(n)을 사용하기로 했다.

그런다음 replace를 이용하여 1은 #, 0은 공백으로 만들어 주었다.

def solution(n, arr1, arr2):
    answer = []
    for x in range(n):
        answer.append(format(arr1[x] | arr2[x], 'b').zfill(n).replace('1', '#').replace('0', ' '))
    return answer

끝.