쿼드트리로 2*2 행렬을 계속해서 만들자
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
int n;
using namespace std;
int Recursion(int x, int y, int len, vector<vector<int>>& vec)
{
// 마지막 2*2 정사각형을 만들기 위해
if (len == 1)
{
return vec[x][y];
}
vector<int> v;
int divsize = len / 2;
v.push_back(Recursion(x, y, divsize, vec));
v.push_back(Recursion(x, y + divsize, divsize, vec));
v.push_back(Recursion(x + divsize, y, divsize, vec));
v.push_back(Recursion(x + divsize, y + divsize, divsize, vec));
// 내림차순
sort(v.begin(), v.end(), greater<>());
// 2번째로 큰거를 반환해서 계속해서 2*2 를 만드는 느낌
return v[1];
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n;
vector<vector<int>> vec(n, vector<int>(n, -1));
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
cin >> vec[i][j];
}
}
int answer = Recursion(0, 0, vec.size(), vec);
cout << answer;
return 0;
}
'코딩 테스트' 카테고리의 다른 글
백준 11053 LIS 1 (0) | 2024.11.01 |
---|---|
백준 11727 타일링 (0) | 2024.10.15 |
백준 2493 탑 (0) | 2024.09.09 |
백준 1992 쿼드트리 (0) | 2024.09.03 |
백준 - 14400 편의점 2 (0) | 2024.09.03 |