[백준 17829] 222-풀링
카테고리: BOJ
태그: Cpp Silver III 구현 분할정복 Coding Test
난이도
실버 III
📜문제
🔎접근
처음에 Queue에다가 넣고 계산한 값을 다시 Queue로 넣어서 Queue의 size가 1이 될 때까지 반복시키는 방식으로 접근을 하려 했는데 배열이 2x2 형태로 들어가야하는데 원하는 순서대로 넣기가 어려웠다.
직접 움직이면서 계산을 하는 방식으로 접근을 했다.
🌞풀이
#include <iostream>
#include <algorithm>
#include <vector>
#define MAX 1024
using namespace std;
int matrix[MAX][MAX];
vector<int> v;
int Pulling(int x, int y)
{
v.clear();
// 4개씩 넣어서 정렬
for (int i = x; i <= x + 1; i++)
for (int j = y; j <= y + 1; j++)
v.push_back(matrix[i][j]);
sort(v.begin(), v.end());
return v[2]; //2번째로 큰 수 리턴
}
int main()
{
int N = 0;
cin >> N;
//matrix 입력
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
cin >> matrix[i][j];
while (N > 1)
{
for (int i = 0; i < N; i += 2)
for (int j = 0; j < N; j += 2)
matrix[i / 2][j / 2] = Pulling(i, j);
N /= 2;
}
cout << matrix[0][0] << "\n";
return 0;
}
❗주의
너무 어렵게 생각해서 접근을 돌아갔다
댓글남기기