문제 설명
board는 10 x 10 크기를 가진 2차원의 행렬로 되어있고, 다음과 같이 동등한 크기 5 x 5을 가진 4개의 구역으로 나뉩니다.
board의 각 구역마다 지뢰를 제거해야 합니다. 지뢰는 bomb1, bomb2, bomb3, bomb4 총 4개의 종류가 있으며 각 구역에서 제거해야 될 지뢰종류가 다릅니다.
1구역에서는 bomb1에 해당하는 요소만 제거합니다.
2구역에서는 bomb2에 해당하는 요소만 제거합니다.
3구역에서는 bomb3에 해당하는 요소만 제거합니다.
4구역에서는 bomb4에 해당하는 요소만 제거합니다.
bomb1, bomb2, bomb3, bomb4는 bombs에 차례대로 담겨 1차원 배열로 주어지고, 지뢰로 판단되는 요소를 0으로 변경하면 지뢰는 제거됩니다.
numpy.ndarray타입의 배열로 board와 bombs가 주어졌을 때 지뢰를 제거한 후, 최종 board의 상태를 반환하는 함수를 구현하세요.
제한 사항
bomb1, bomb2, bomb3, bomb4은 0보다 큰 정수입니다.
예시
예를 들어, 10 x 10 모양의 2차원 행렬 board와 1차원 배열 bombs가 아래와 같이 주어졌다고 가정합시다.
board =
[[3 4 2 4 4 1 2 2 2 4]
[3 2 4 1 3 1 3 4 0 3]
[1 4 3 0 0 2 2 1 3 3]
[2 3 3 0 2 4 2 4 0 1]
[3 0 3 1 1 0 1 4 1 3]
[3 3 3 4 2 0 3 1 3 1]
[1 3 4 1 1 3 1 1 3 3]
[0 4 4 1 4 1 0 3 3 3]
[4 0 4 4 0 0 0 0 3 2]
[2 0 2 2 0 2 4 1 1 0]]
bombs = [1 2 3 4]
그럼 지뢰 제거 전과 후는 다음과 같습니다.
문제 풀이
import numpy as np
def solution(board, bombs):
answer = np.array([])
board_1 = board[0:5,0:5]
print(board_1)
a,b = np.where(board[0:5,0:5] == bombs[0])
c,d = np.where(board[0:5,5:10] == bombs[1])
e,f = np.where(board[5:10,0:5] == bombs[2])
g,h = np.where(board[5:10,5:10] == bombs[3])
for i in range(len(a)):
board[a[i],b[i]] = 0
for i in range(len(c)):
board[c[i],d[i]+5] = 0
for i in range(len(e)):
board[e[i]+5,f[i]] = 0
for i in range(len(g)):
board[g[i]+5,h[i]+5] = 0
answer = board
return answer
'AI_Bootcamp' 카테고리의 다른 글
4주차 Day16 딥러닝 기초 및 비전 (0) | 2022.01.25 |
---|---|
4주차 Day16 Numpy 심화 실습 2 (0) | 2022.01.24 |
Numpy 심화 실습 chap5 브로드캐스팅 3 (0) | 2022.01.21 |
Numpy 심화 실습 chap6 any(),all() (0) | 2022.01.21 |
3주차 Day15 Numpy 실습 V (0) | 2022.01.21 |