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

 

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

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

programmers.co.kr


풀이 과정

파이썬의 내장함수 bin()을 이용해서 십진수 숫자를 이진수 문자열로 바꿔주었다

ex) bin(9) -> '0b1001'

      bin(9)[2:] -> '1001'

 

지도의 한 변의 길이가 n이어야 하므로 문자열의 길이가 n 미만이면 문자열의 맨 앞에 0을 추가로 붙여준다

ex) '1001' -> '01001' (n = 5)

 

첫 째 지도, 둘 째 지도에서 위와 같은 방법으로 십진수를 이진수로 전환해주고, 양쪽 지도를 모두 살펴보면서 양쪽 지도 모두가 0이면 실제 지도에는 공백, 하나라도 1이면 실제 지도에는 '#'을 채워주면서 지도를 완성하고 출력해주면 된다.


소스 코드

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

    for number in arr1:
        temp = bin(number)[2:]
        while len(temp) < n:
            temp = '0' + temp
        arr1map.append(temp)

    for number in arr2:
        temp = bin(number)[2:]
        while len(temp) < n:
            temp = '0' + temp
        arr2map.append(temp)

    for outer in range(n):
        temp_answer = []
        for inner in range(n):
            if arr1map[outer][inner] == '0' and arr2map[outer][inner] == '0':
                temp_answer.append(' ')
            else:
                temp_answer.append('#')
        answer.append(temp_answer)

    answer2 = []

    for array in answer:
        answer2.append(''.join(array))


    return answer2

+ Recent posts