본문 바로가기

알고리즘/Programmers

[Programmers / Python] 비밀지도

문제이해

  • 2개의 지도를 2진수로 만든다.
  • n자리를 채워야하니 빈자리에 0을 넣어준다.
  • 각 수를 돌면서 2개가 동시에 0인 경우만 ' '(공백)을 넣어준다.
  • 아니면 #을 넣어준다.

 

코드

def solution(n, arr1, arr2):
    gido1 = [ int(bin(arr1[i])[2:]) for i in range(n)]
    gido2 = [ int(bin(arr2[i])[2:]) for i in range(n)]
    
    answer = []
    for j in range(n):
        result = ''
        a = (str(gido1[j]).zfill(n))
        b = (str(gido2[j]).zfill(n))
        for k in range(n):
            if(a[k] == '0' and b[k] == '0'):
                result += ' '
            else:
                result += '#'
        answer.append(result)
    
    
    return answer

bin을 하면 앞에 0b가 붙기 때문에 2번째 자리부터 사용합니다.

zfill()함수는 매개변수 받는거에 따라 앞에 0을 채워줍니다.

아니면 rjust(n,"0")을 사용해도 됩니다. rjust()는 (공백의 수, 공백을 메워줄 문자)를 넣어주면 됩니다.

ex)

val = "77".rjust(5, "0") 
print(val) 

val = "77777".rjust(5, "0") 
print(val) 

val = "123".rjust(5, "a") 
print(val) 

val = "123".rjust(3, "a") 
print(val)
00077
77777
aa123
123

 

또한번 문자크기만큼 for문을 돌아서 0번 부터 n까지 둘다 0인 것을 확인합니다.

  • 2개가 동시에 0인 경우만 ' '(공백)을 넣어준다.
  • 아니면 #을 넣어준다.

 

728x90