알고리즘 풀이/프로그래머스

[프로그래머스/Lv.1] 비밀지도_2018 KAKAO BLIND RECRUITMENT

meeseeks 2023. 5. 8. 11:56
반응형
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


풀이

def solution(n, arr1, arr2):

# 1. arr1, arr2를 1,0으로 바꿈
    for i in range(n):
        row1 = bin(arr1[i])[2:]
        arr1[i] = row1.zfill(n)
        
        row2 = bin(arr2[i])[2:]
        arr2[i] = row2.zfill(n)

# 2. arr = ['', '', '', '', ''] : n개의 빈 문자열
    arr = ['' * n for _ in range(n)]
    
# 3. 두 배열 동시에 탐색하면서 둘 중 하나라도 1이면 arr의 해당 칸 #
    for i in range(n):
        for j in range(n):
            if arr1[i][j] == '1' or arr2[i][j] == '1':
                arr[i] += '#'
            else:
                arr[i] += ' '

    return arr

풀이과정

1. 두 배열의 값을 1, 0으로 치환한다.

예를 들어, 첫 번째 값이 9라고 하자.

  • 이진수로 변환 후 '0b'제거 : 0b1001 → 1001
  • 행의 길이 n만큼 앞에 0 채우기 : 01001

2. n개의 빈 문자열을 가진 arr 배열을 생성한다.

 

3. arr1과 arr2를 탐색하면서 둘 중 하나라도 값이 1이라면 arr[i]에 '#'을 추가하고, 그렇지 않으면 공백을 추가한다.

 

반응형