알고리즘 문제 해결/BOJ

[분할 정복] BOJ 17829 222-풀링

jmkimmessi 2022. 1. 15. 00:00
반응형

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

 

17829번: 222-풀링

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

www.acmicpc.net

 

문제 해결 알고리즘

 

전형적인 분할 정복 문제이다.

 

소스 코드

 

#include <bits/stdc++.h>
using namespace std;

int arr[1100][1100];

void div_n_cnqr(int N, int x, int y){
    
    if(N == 2){
        vector<int> v;
        v.push_back(arr[x][y]);
        v.push_back(arr[x+1][y]);
        v.push_back(arr[x][y+1]);
        v.push_back(arr[x+1][y+1]);
        sort(v.begin(), v.end());
        
        arr[x][y] = v[2];
        return;
    }
    
    div_n_cnqr(N/2, x, y);
    div_n_cnqr(N/2, x+N/2, y);
    div_n_cnqr(N/2, x, y+N/2);
    div_n_cnqr(N/2, x+N/2, y+N/2);
    
    vector<int> v;
    v.push_back(arr[x][y]);
    v.push_back(arr[x+N/2][y]);
    v.push_back(arr[x][y+N/2]);
    v.push_back(arr[x+N/2][y+N/2]);
    sort(v.begin(), v.end());
    
    arr[x][y] = v[2];
    
}

int main(){
    int N; cin >> N;
    
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            cin >> arr[i][j];
        }
    }
    
    div_n_cnqr(N, 0, 0);
    
    cout << arr[0][0];
    
}
반응형

'알고리즘 문제 해결 > BOJ' 카테고리의 다른 글

[BFS] BOJ 2589 보물섬  (0) 2022.01.21
[백 트래킹] BOJ 1038 감소하는 수  (0) 2022.01.18
[그리디] BOJ 16496 큰 수 만들기  (0) 2022.01.12
[BFS] BOJ 17267 상남자  (0) 2022.01.08
[BFS] BOJ 5427 불, BOJ 4179 불!  (0) 2022.01.05