본문 바로가기

Algorithm

(C++) - 백준(BOJ) 17829번 : 222-풀링

반응형

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

 

17829번: 222-풀링

조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Convolutional Neural Network, CNN)의 풀링 연산에 영감을 받아 자신만의 풀링을 만들고 이를 222-풀링이라 부르기로 했다. 다음은 8×8 행렬이 주어졌다고 가정했을 때 222-풀링을 1회 적용하는 과정을 설명한 것이다 행렬을 2×2 정사각형으로 나눈다. 각 정사각형에서 2번째로 큰 수만 남긴다. 여기서 2번째로 큰 수란, 정사

www.acmicpc.net

간단한 구현문제였습니다..왜 못 풀었는지..

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int p[1025][1025];
int n,ans;
 
//두 번째로 큰 수를 반환하는 함수
int Pulling(int x, int y)
{
    vector <int > a;
    for (int i = x; i < x + 2; i++)
        for (int j = y; j < y + 2; j++)
            a.push_back(p[i][j]);
    sort(a.begin(), a.end());
    return a[2];
}
 
int main()
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> p[i][j];
        }
    }
    while (n > 1)
    {
        for (int i = 0; i < n; i+=2)
            for (int j = 0; j < n; j+=2)
                p[i/2][j/2= Pulling(i,j); //가로 세로 2칸씩 움직이며 p갱신
        n /= 2;
    }
    cout << p[0][0<< '\n';
}