코딩테스트/🕊️프로그래머스

LEVEL 1. [1차] 비밀지도

@soohh 2022. 9. 28. 11:36

 

🟪 나의 구현 스케치

bin(arr1[index] | arr2[index]) 를 이용해 두 수의 2진수 OR 연산을 진행하고 [2:]를 이용하여 0b를 제외한 0과 1로만 이루어진 문자열을 배열에 넣는다.

replace를 이용하여 1은 #으로 0은 공백으로 대체하여 문제의 출려과 같은 모습이 되게 한다. 하지만 001111은 1111로 배열에 들어있기 때문에 answer[index] = " "*(n-len(answer[index])) + answer[index]로 1111앞에 00을 붙여준다.

 

🟪 나의 구현 코드

def solution(n, arr1, arr2):
    answer = [bin(arr1[index]|arr2[index])[2:] for index in range(n)]
    for index in range(n):
        if len(answer[index]) < n:
            answer[index] = " "*(n-len(answer[index])) + answer[index]
        answer[index] = answer[index].replace("1", "#")
        answer[index] = answer[index].replace("0", " ")
    return answer

 

🟪 다른 사람의 구현 코드

a12=a12.rjust(n,'0')를 이용하여 a12 문자열 길이가 n개가 될때까지 오른쪽부터 '0' 문자를 넣어준다.

덕분에 rjust, ljust에 대해 알게되었다.

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

 

https://school.programmers.co.kr/learn/courses/30/lessons/17681