본문 바로가기

알고리즘/프로그래머스

[프로그래머스][2018 KAKAO BLIND RECRUITMENT][Python] 비밀지도

[ 문제 ]

 


[출제 의도]

 

  • 비트 연산자 활용

[ 문제 풀이 ]

 

지도1과 지도2의 각 정수를 비트 OR 연산자를 이용해 합칩니다.

합친 결과의 길이가 N보다 짧다면 앞 부분에 공백을 넣어 길이를 N으로 맞춥니다. 

마지막으로 0은 공백으로 1은 #으로 치환하면 됩니다.

 


[ 정답 코드 ]

 

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

    for i in range(n):
        tmp = str(bin(arr1[i] | arr2[i]))[2:]  # 비트 OR
        answer[i] = (n % len(tmp)) * "0" + tmp  # 고정길이 N

        answer[i] = answer[i].replace("0", " ")
        answer[i] = answer[i].replace("1", "#")

    return answer


print(solution(6, [46, 33, 33 ,22, 31, 50], [27 ,56, 19, 14, 14, 10]))