파이썬 알고리즘 문제 풀이

Baekjoon Online Judge 17829번 파이썬. 분할정복.

gogi masidda 2023. 1. 31. 16:39

문제링크

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

 

17829번: 222-풀링

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

www.acmicpc.net

 

'divide=size//2'로 정사각형을 4등분을 할 수 있도록 하였다.

그리고 dnc함수에서 lefttop,righttop,leftbottom,rightbottom으로 나누어 진행될 수 있도록 하였다.

 

정답코드

import sys

N = int(sys.stdin.readline())
nums = []
for i in range(N):
  nums.append(list(map(int,sys.stdin.readline().split())))
  
def dnc(size,x,y):
  divide = size // 2
  if size == 2:
    group=[nums[x][y], nums[x+1][y], nums[x][y+1], nums[x+1][y+1]]
    group.sort(reverse=True) #내림차순 정렬
    return group[1]

  lefttop = dnc(divide,x,y)
  righttop = dnc(divide,x+divide,y)
  leftbottom = dnc(divide,x,y+divide)
  rightbottom = dnc(divide,x+divide,y+divide)
  group = [lefttop,righttop,leftbottom,rightbottom]
  group.sort(reverse=True)
  return group[1]

print(dnc(N,0,0))
728x90