Algorithm/Backjoon

[ 백준 17829 JAVA ] 222-풀링 (Feat. 분할정복)

youth787 2023. 10. 28. 17:00

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

 

17829번: 222-풀링

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

www.acmicpc.net

 

Solve

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
	static int[][] arr;
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		
		arr = new int[N][N];
		for(int i=0; i<N; i++) {
			String[] input = br.readLine().split(" ");
			for(int j=0; j<N; j++) {
				arr[i][j] = Integer.parseInt(input[j]);
			}
		}// 입력받기 완료 
		
		System.out.println(division(0,0,N)); // 결과 출력 
	}// main end 
    
	public static int division(int x, int y, int size) {
		if(size == 2) {
			int[] map = new int[4];
			int idx =0;
			
			for(int i=x; i<x+2;i++) 
				for(int j=y; j<y+2;j++) 
					map[idx++] = arr[i][j];
			
			Arrays.sort(map);
			return map[2];
		}
		
		else {
			int[] map = new int[4];
			size = size/2;
			
			map[0] = division(x,y,size);
			map[1] = division(x,y+size,size);
			map[2] = division(x+size,y,size);
			map[3] = division(x+size,y+size,size);
			
			Arrays.sort(map);
			return map[2];
		}
	}
}
반응형