본문 바로가기

알고리즘 & 코딩테스트/코딩테스트

Programmers Lv.1 "[1차] 비밀지도"

Programmers Lv.1 [1차] 비밀지도, 2018 KAKAO BLIND RECRUITMENT, 정답률 69%

그림을 보면 바로 보이는 분들도 계실것이다. 흰 빈칸과 #이 들어가 있는 칸을 각각 0과 1로 치환하여 만들어진 이진수를 10진수로 바꾸는데 그것을 각 행별로 arr에 담아서 주어진다. 그림에서 보여지듯, 빈칸과 빈칸이 만나면 빈칸이되고, 그렇지 않은 경우엔 #이되는것을 알 수 있다. 즉, 핵심은 arr1과 arr2에 주어진 각 행을 비트연산자 OR을 이용해 처리하면 되는것이다. 그후 다시 0과 1을 각각 빈칸과 #으로 치환시켜 반환해주면 된다.

def solution(n, arr1, arr2):
    answer = []
    for first, second in zip(arr1, arr2):
        tmp = bin(first | second)[2:]
        if len(tmp)<n:
            tmp = '0'*(n-len(tmp))+tmp
        tmp = tmp.replace('1', '#')
        tmp = tmp.replace('0', " ")
        answer.append(tmp)
    return answer