𝘼𝙣𝙖𝙡𝙮𝙨𝙞𝙨/ᴀʟɢᴏʀɪᴛʜᴍ

[Programmers] 안전지대 - np.pad / Counter

콜라맛갈비 2023. 7. 6. 14:33
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