programmers Level1 (7)

Backend, DataEngineer·2021년 12월 1일
0
post-thumbnail

2018 KAKARO BLIND [1차] 비밀지도

나의 답안


def solution(n, arr1, arr2):
    answer = ['' for i in range(n)]
    
    for i in range(len(arr1)):
        temp =bin(arr1[i])[2:]        
        if len(temp) != n:
            while len(temp) != n:
                temp = '0'+temp
            arr1[i] = temp
        arr1[i] = temp
        
    for i in range(len(arr2)):
        temp =bin(arr2[i])[2:]        
        if len(temp) != n:
            while len(temp) != n:
                temp = '0'+temp
            arr2[i] = temp
        arr2[i] = temp
    
    for i in range(n):
        for j in range(n):
            if (arr1[i][j] == '1') or (arr2[i][j] == '1'):
                answer[i]+='#'
            else:
                answer[i]+=" "
    return answer

최고 답안

def solution(n, arr1, arr2):
    answer = []
    for i,j in zip(arr1,arr2):
        a12 = str(bin(i|j)[2:])
        a12=a12.rjust(n,'0')
        a12=a12.replace('1','#')
        a12=a12.replace('0',' ')
        answer.append(a12)
    return answer
    

느낀점:
문제자체는 어렵지 않았다. 리스트의 숫자를 이진수(binary)로 바꾸고 자릿수에 맞게 0을 추가해준다.
그다음 arr1, arr2의 원소를 비교해주어 1 또는 0을 반환하게 하였다. 이 과정 까지 문제는 그렇게 어렵지 않았으나, 최고 답안을 보고 많은 생각이 들었다.
나는 최고답안이 쓴 zip을 몰라 동일한 코드를 2번 적었고, bin 함수에 비트연산자를 쓰면 한번에 두 개의 비교연산을 한 결과값을 이진수로 출력할수 있다는 것을 몰라 무수한 반복문을 사용했다. 또한 rjust함수를 몰라 rjust를 만들어 사용했다. 이번 문제를 풀고 내장 함수에 대한 지식이 있으면 코드를 깔끔하고 간결하게 쓸수 있고 함수를 만들어내지 않고 빠르게 사용할수 있다는 것을 알게 되었다.

참고 사이트

zip
bin 및 비트연산자
rjust, ljuist, zfill
AND, OR, NAND, NOR, XOR, XNOR

profile
오늘 더 좋은 사람, 더 좋은 하루

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN