본문 바로가기

알고리즘/프로그래머스

2018 KAKAO BLIND RECRUITMENT- 비밀지도, 파이썬

1. 문제

- 링크

2. 풀이 및 개선

- 이것 역시 쉬운 문제인데 졸릴 때 풀어서 거의 어거지로 풀었다. 

- 비트마스크를 이용해서 풀면 간편하다.

- replace 등을 활용하여 더욱 간단하게 표현 가능하다. 

3. 코드

- 1차 대충짠 코드

def solution(n, arr1, arr2):
    answer = []
    for i in range(n) :
        a, b, = bin(max(arr1[i], arr2[i]))[2:] , bin(min(arr1[i], arr2[i]))[2:]
        left = '' + ' ' * (n - len(a))
        for k in range(len(a) - len(b)) :
            if a[k] == '1' :
                left += '#'
            else :
                left += ' '
        right = ''
        for j in range(1, len(b) + 1) :
            if a[-j] == '1' or b[-j] == '1' :
                right = '#' + right
            else :
                right = ' ' + right
        answer.append(left + right)
    return answer

- 개선된 코드 

def solution(n, arr1, arr2):
    answer = []
    for i in range(n) :
        s = bin(arr1[i]|arr2[i])[2:]
        string = ' ' * (n - len(s))
        for j in range(len(s)) :
            if s[j] == '1' :
                string += '#'
            else :
                string += ' '
        answer.append(string)
    return answer