[백준 17829] 222-풀링

Date:     Updated:

카테고리:

태그:

난이도

실버 III

📜문제

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

image image

🔎접근

처음에 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;
}

❗주의

너무 어렵게 생각해서 접근을 돌아갔다

맨 위로 이동하기

BOJ 카테고리 내 다른 글 보러가기

댓글남기기