๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 17829๋ฒˆ - 222-ํ’€๋ง

by ์•ˆ์ฃผํ˜• 2022. 4. 30.

๋ฌธ์ œ

 

17829๋ฒˆ: 222-ํ’€๋ง

์กฐ๊ธฐ ์กธ์—…์„ ๊ฟˆ๊พธ๋Š” ์ข…์šฑ์ด๋Š” ์š”์ฆ˜ ํ•ซํ•œ ๋”ฅ๋Ÿฌ๋‹์„ ๊ณต๋ถ€ํ•˜๋˜ ์ค‘, ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์— ํ”ํžˆ ์“ฐ์ด๋Š” ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง(Convolutional Neural Network, CNN)์˜ ํ’€๋ง ์—ฐ์‚ฐ์— ์˜๊ฐ์„ ๋ฐ›์•„ ์ž์‹ ๋งŒ์˜ ํ’€๋ง์„ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ 22

www.acmicpc.net

 

์ฝ”๋“œ

// 13:00 ~ 13:50
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

vector<vector<int>>v;
int N;

int dx[3] = {1,0,1};
int dy[3] = {0,1,1};

int find(int i, int k){
    priority_queue<int>pq;
    pq.push(v[i][k]);
    for(int j=0; j<3; j++){
        int nx = i+dx[j];
        int ny = k+dy[j];
        pq.push(v[nx][ny]);
    }
    pq.pop();
    return pq.top();
}

vector<vector<int>> divide(vector<vector<int>> &v, int n){
    
    vector<vector<int>>fin;
    
    for(int i=0; i<n; i+=2){
        vector<int>ing;
        for(int k=0; k<n; k+=2){
            ing.push_back(find(i,k));
        }
        fin.push_back(ing);
    }
    
    return fin;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin>>N;
    
    for(int i=0; i<N; i++){
        vector<int>temp;
        for(int k=0; k<N; k++){
            int inp; cin>>inp;
            temp.push_back(inp);
        }
        v.push_back(temp);
    }
    
    while(v.size()!=1){
        vector<vector<int>>temp =divide(v, v[0].size());
        v = temp;
    }
    
    cout<<v[0][0];
}

 

ํ’€์ด

2๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฑด๋ฐ ๋Œ€์ถฉ ์ฝ๊ณ  ์ œ์ผ ํฐ ์ˆ˜๋ฅผ ์ฐพ๋‹ค๊ฐ€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๋ถ„ํ• ํ•˜์—ฌ ํ‘ธ๋Š” ๊ตฌํ˜„ ๋ฌธ์ œ์˜€๋Š”๋ฐ 2x2 ์”ฉ ๋‚˜๋ˆ„์–ด์„œ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์— ์ ‘๊ทผํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ i+2, k+2์”ฉ ํ•ด์ค˜ ๊ฐ€๋ฉฐ ๊ธฐ์ค€์ ์„ ์žก์•˜๊ณ  ๊ทธ ๊ธฐ์ค€์ ์œผ๋กœ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ, ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ๋Œ€๊ฐ์„ ์„ ์ฐพ์•„์„œ ํž™์— ๋„ฃ๊ณ , ๋‘ ๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด ๊ฐ€๋ฉด์„œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ ๋งŒ๋“ค ๋ฐฐ์—ด์„ ๋˜ ๋‹ค์‹œ 2x2 ์”ฉ ๋‚˜๋ˆ„์–ด ์ฐพ์œผ๋ฉฐ ์ตœ์ข…์ ์œผ๋กœ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 1์ด ๋  ๋•Œ๊นŒ์ง€ ํƒ์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ๋‹ค ํ’€๊ณ  ๋‹ค๋ฅธ์‚ฌ๋žŒ์˜ ํ’€์ด๋„ ํ•œ๋ฒˆ ์ฐพ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

(C++) - ๋ฐฑ์ค€(BOJ) 17829๋ฒˆ : 222-ํ’€๋ง

https://www.acmicpc.net/problem/17829 17829๋ฒˆ: 222-ํ’€๋ง ์กฐ๊ธฐ ์กธ์—…์„ ๊ฟˆ๊พธ๋Š” ์ข…์šฑ์ด๋Š” ์š”์ฆ˜ ํ•ซํ•œ ๋”ฅ๋Ÿฌ๋‹์„ ๊ณต๋ถ€ํ•˜๋˜ ์ค‘, ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์— ํ”ํžˆ ์“ฐ์ด๋Š” ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง(Convolutional Neural Network, CNN)์˜ ํ’€๋ง..

codecollector.tistory.com

#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';
}

์ €์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ๋ถ„ํ• ํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด์˜ ๋ฐฐ์—ด์˜ ๊ณต๊ฐ„๋งŒ ์ด์šฉํ•˜์—ฌ ํ’€์œผ์…จ๋Š”๋ฐ, ์ด๊ฒŒ ์ข€ ๋ฉ”๋ชจ๋ฆฌ ๋ฉด์—์„œ๋Š” ์กฐ๊ธˆ ๋” ํšจ์œจ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋Œ“๊ธ€