[프로그래머스/Python] [1차] 비밀지도

PhilAI·2023년 8월 1일
0

문제

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

풀이

풀이 1 - (성공)

  1. for문을 통해 arr1,arr2 숫자를 이진법으로 변환한다. 이진법으로 바꿨을때 5자리가 되지 않는다면 앞에 0을 채워넣는다.
  2. for문을 통해 같은 인덱스 값을 가진 arr1, arr2 이진수를 비교한다. 모두 0을 가지는 경우에는 " "공백으로 바꾸고 그 이외에는 #으로 바꾼다.
  3. 변환된 텍스트를 answer에 저장한다.
def solution(n, arr1, arr2):
    answer = []
    for a1, a2 in zip(arr1, arr2):
        a1 = bin(a1)[2:]
        if len(a1) < n:
            a1 = "0"*(n-len(a1)) + a1

        a2 = bin(a2)[2:]
        if len(a2) < n:
            a2 = "0"*(n-len(a2)) + a2
        
        temp = ""   
        #모두 0이면 0 그 이외에는 1로 변환 
        for e1, e2 in zip(a1, a2):
            if e1 == '0' and e2 == '0':
                temp += ' '
            else:
                temp += '#'
        answer.append(temp)
                
                
    return answer

풀이 2 - (성공)

  1. for문을 통해 arr1, arr2의 각 요소들을 변환하다.
  2. 이진수의 길이가 n보다 작을 경우 왼쪽에 0으로 채워서 n 갯수를 맞춘다.
  3. 이진수에서 1을 #로, 0을 " "공백을 바꾼다.
  4. 최종 결과 리스트에 변환된 이진수를 추가한다.
def solution(n, arr1, arr2):
    answer = []
    for i,j in zip(arr1,arr2):
        a12 = str(bin(i|j)[2:]) # i랑 j를 이진변환 하고 같은 자리에 모두 0이 오면 0, 하나라도 1이 있으면 1로 출력
        a12=a12.rjust(n,'0')
        a12=a12.replace('1','#')
        a12=a12.replace('0',' ')
        answer.append(a12)
    return answer

reference

profile
철학과가 도전하는 Big Data, AI

0개의 댓글