Programmers/1단계

[Kakao BLind] 1차 비밀지도

Snowboarder 2022. 9. 27. 11:30

 

문제풀이

def solution(n, arr1, arr2):
    cnt = 0
    g = ''
    answer = []
    
    for a, b in zip(arr1, arr2):
        arr1[cnt] = str(bin(a)[2:]).zfill(n)
        arr2[cnt] = str(bin(b)[2:]).zfill(n)
        cnt += 1
    
    for i in range(n):
        answer.append(g)
        
    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

문제해석

  • 핵심은 배열 2개를 활용할 줄아는가 출력 및 비교가 가능한가 
  • 1단계 : 2진수를 바꾸는데 5자리여야한다. -> 배열로 만든다
  • 2단계 : 배열 2개를 비교해서 새로운 배열로 만든다.
  • 다른사람 풀이
  • bin 을 사용할때 한번에  두 수의 이진수를 구한 뒤 or연산자 한 결과를 나타내는 것 같네요.
  • rjust를 통해 공백의 수, 공백을 메워줄 문자를 넣어줌

총정리

  •  종이에 적고 단계별로 접근하니 쉬웠다.
  •  하지만 모르는 zip 함수, 배열2개를 활용하는 방법, 빈배열을 만드는 게 필요한가? 리스트 추가(append, insert) 개념 부족하다.