https://www.acmicpc.net/problem/17829

 

17829번: 222-풀링

조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Convolutional Neural Network, CNN)의 풀링 연산에 영감을 받아 자신만의 풀링을 만들고 이를 22

www.acmicpc.net


  • 단순한 구현 문제로, 예외 처리 해줄 부분도 딱히 없다.
  • N x N 의 행렬이 반드시 2의 거듭제곱 꼴로 주어지기 때문에 2번째 최대값을 뽑아내는 풀링만 구현하면 문제 될 것이 없다.

N = int(input())

img = [list(map(int, input().split())) for i in range(N)]

def filter(img, r, c):      # 4칸 중 두번째 높은 값 반환해주는 함수
    return sorted([img[r][c], img[r][c+1], img[r+1][c], img[r+1][c+1]])[-2]

def pooling(img):           # stride=2 로 풀링하는 함수
    return [[filter(img, r, c) for c in range(0, len(img), 2)] for r in range(0, len(img), 2)]

while len(img) > 1:         # 1 x 1 이 될 때 까지 풀링을 반복
    img = pooling(img)

print(img[0][0])

'PS > BOJ' 카테고리의 다른 글

[백준] 9553 : 양궁  (0) 2021.06.30
[백준] 4172 : sqrt log sin  (0) 2021.06.29
[백준] 20040 : 사이클 게임  (0) 2021.06.27
[백준] 2143 : 두 배열의 합  (0) 2021.06.26
[백준] 2876 : 그래픽스 퀴즈  (0) 2021.06.25

+ Recent posts