백준 17829번 222-풀링 문제풀이(C++)

YooHeeJoon·2022년 9월 25일
0

백준 문제풀이

목록 보기
14/56

백준 17829번 222-풀링

아이디어

행렬을 2×2 정사각형으로 나눈다. ->
/2를 하면서 /2가 된 지점을 기점으로 (y, x), (y+1, x), (y, x+1), (y+1, x+1)를 비교한다 (단 2번째 큰 수 이므로 vector에다가 넣어서 정렬해서 가져온다)

문제해결

#include<bits/stdc++.h>
using namespace std;
#define MAX 1050
int arr[MAX][MAX];
int division(int y, int x, int size) {
	vector<int> v;
	if (size == 1) {
		v.push_back(arr[y][x]);
		v.push_back(arr[y][x + 1]);
		v.push_back(arr[y + 1][x]);
		v.push_back(arr[y + 1][x + 1]);
		sort(v.begin(), v.end());
		return v[2];
	}

	v.push_back(division(y, x, size / 2));
	v.push_back(division(y + size, x, size / 2));
	v.push_back(division(y, x + size, size / 2));
	v.push_back(division(y + size, x + size, size / 2));
	sort(v.begin(), v.end());
	return v[2];
}
int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	int n; cin >> n;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cin >> arr[i][j];
		}
	}
	cout << division(0, 0, n / 2) << '\n';
	return 0;
}

0개의 댓글