728x90
https://school.programmers.co.kr/learn/courses/30/lessons/120866
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import numpy as np
from collections import Counter
def solution(board):
n = len(board)
board_padded = np.pad(board, ((1,1), (1,1)), 'constant', constant_values=-1)
danger_array = np.pad(board, ((1,1), (1,1)), 'constant', constant_values=-1)
for i in range(1, n+1) :
for j in range(1, n+1) :
if board_padded[i][j] == 1 :
for x in range(i-1, i+2) :
for y in range(j-1, j+2) :
danger_array[x, y] = 1
danger_list = danger_array.reshape(1, -1).squeeze()
answer = Counter(danger_list)[0]
return answer
* np.pad
np.pad(array,
pad_width=((a, b), (c, d)),
mode='constant',
constant_values=0
)
array = pad method를 적용할 대상이 될 array
pad_width = 데이터를 추가해서 테두리를 몇줄이나 만들지를 지정하는 부분입니다.
a -> 위쪽 행 추가 개수
b -> 아래쪽 행 추가 개수
c -> 왼쪽 열 추가 개수
d -> 오른쪽 열 추가 개수
mode = pad method를 적용하는 mode를 지정합니다. 기본값은 constant입니다.
mode='constant' -> 특정한 값으로 테두리를 추가함.
mode='edge' -> 원본 array에서 가장 가까운 모서리(edge)에 있는 값으로 테두리 데이터를 추가함.
mode='maximum' -> 특정 테두리 위치에 존재하는 값에서 행/열에 있는 최대값으로 테두리 데이터를 추가함.
constant_values = 테두리에 채워넣을 상수값을 의미합니다. 기본값은 0입니다.
참고 사이트)
https://cosmosproject.tistory.com/507
728x90
'𝘼𝙣𝙖𝙡𝙮𝙨𝙞𝙨 > ᴀʟɢᴏʀɪᴛʜᴍ' 카테고리의 다른 글
[Programmers] 정수를 나선형으로 배치하기 (0) | 2023.07.10 |
---|---|
[Programmers] 달리기 경주 (0) | 2023.07.07 |
[Programmers] 평행 - combinations (0) | 2023.07.05 |
[Programmers] 문자열 밀기 : deque, roatate(1) (0) | 2023.06.29 |
리스트 정렬 다중 조건 (0) | 2023.06.29 |