코딩테스트 연습 - [1차] 비밀지도

Gyuhan Park·2021년 7월 21일
0

코딩테스트 정복

목록 보기
14/47

코딩테스트 연습 - [1차] 비밀지도

비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.

# 정답코드

암호화된 숫자를 OR 비트 연산으로 더한 후 2진수로 변환해 저장하였다. 그 후 숫자로 저장된 값을 " "과 "#"으로 변환하였다.

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

    for i, j in zip(arr1, arr2):
        binary = i|j
        bins.append(format(binary, 'b'))

    for i in bins:
        temp = ""
        i = i.zfill(n) # 문자열 길이가 n이 될 때까지 왼쪽에 0을 채움.
        for j in i:
            if j == '0':
                temp += " "
            if j == '1':
                temp += "#"
        answer.append(temp)
        
    return answer

# 참고코드

이중 for문을 사용하지 않고 replace를 사용하여 " "과 "#"을 표현하였다.
bin(i|j) 을 사용하면 변수값을 2진수로 변환하고 비트연산까지 해주는 것 같다. 앞의 2진수 표현인 0b가 붙어서 [2:]으로 잘라주었다. zfill과 rjust 둘다 문자열이나 숫자를 일정한 길이로 반환시키는 함수다.

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
profile
단단한 프론트엔드 개발자가 되고 싶은

0개의 댓글