히치키치

[백준] 17829번 : 222-풀링 - Python(파이썬) 본문

알고리즘 스터디

[백준] 17829번 : 222-풀링 - Python(파이썬)

히치키치 2021. 3. 22. 10:37

www.acmicpc.net/problem/17829

 

17829번: 222-풀링

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

www.acmicpc.net

 

 

풀이
  • 분할 정복
  • 인덱싱으로 나눠 재귀적으로 구현하는 것이 포인트

 

 

코드
# 문제 : https://www.acmicpc.net/problem/17829

import sys

input=sys.stdin.readline

def pooling(array,n):
    if n==1:
        return array[0][0]
    else:
        new_=[[] for _ in range(n//2)]
        for i in range(0,n,2):
            for j in range(0,n,2):
                new_[i//2].append(sorted([array[i][j],array[i+1][j],array[i][j+1],array[i+1][j+1]])[2])
        return pooling(new_,n//2)




N=int(input())
array=[list(map(int,input().split())) for _ in range(N)]
print(pooling(array,N))

 

헷갈렸던 점
#(1)여러줄 입력받고 한줄씩 리스트로 묶어 2차원 리스트로 저장
array=[list(map(int,input().split())) for _ in range(N)]

#(2)sorted([리스트])[X] : 리스트의 요소를 내림차순으로 나열하고 X번째 수
#(3)새로 생기는 사이즈 축소된 배열 : row잡고 거기에 요소 한개씩 추가
for i in range(0,n,2):
	for j in range(0,n,2):
		new_[i//2].append(sorted([array[i][j],array[i+1][j],array[i][j+1],array[i+1][j+1]])[2])
Comments