프로그래머스 비밀지도

DARTZ·2022년 6월 15일
0

알고리즘

목록 보기
87/135
def make_2(number, n):

    trans = ''
    
    for _ in range(n):
        if number % 2 == 1:
            trans = '1' + trans

        else:
            trans = '0' + trans

        number = number // 2

    return trans

def solution(n, arr1, arr2):
    answer = []
    new_arr1 = []
    new_arr2 = []

    for a in arr1:
        new_arr1.append(make_2(a, n))

    for a in arr2:
        new_arr2.append(make_2(a, n))

    for x in range(n):

        temp = ''

        for y in range(n):
            if new_arr1[x][y] == '1' or new_arr2[x][y] == '1':
                temp += '#'

            else:
                temp += ' '

        answer.append(temp)

    return answer

코드가 지저분하다라는 느낌을 받았다. 일단 문제 흐름대로 구현을 했는데 더 좋은 코드가 있는지 고민해봐야할 것 같다. 다른 분의 코드를 참고해보자.

def solution(n, arr1, arr2):
    answer = []
    arr1_bin = []
    arr2_bin = []
    for i in range(n):
        arr1_bin.append(bin(arr1[i])[2:])
        arr2_bin.append(bin(arr2[i])[2:])
        arr1_bin[i] = ('0' * (n-len(arr1_bin[i]))) + arr1_bin[i]
        arr2_bin[i] = ('0' * (n-len(arr2_bin[i]))) + arr2_bin[i]
    
        tmp = ''
        for p in range(n):
            if arr1_bin[i][p] == '1' or arr2_bin[i][p] == '1':
                tmp += '#'
            elif arr1_bin[i][p] == '0' and arr2_bin[i][p] == '0':
                tmp += ' '
        answer.append(tmp)
        
    return answer

2진수로 변환할때 bin 함수를 사용했다. 깔끔하게 구현한 것 같아서 참고해봐야겠다.

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글