본문 바로가기

Algorithm

7733. 치즈 도둑

반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWrDOdQqRCUDFARG&categoryId=AWrDOdQqRCUDFARG&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 


#include<iostream>
#include<queue>
#include<string.h>
using namespace std;

int N;
int arr[100][100];
bool visit[100][100];


int main(int argc, char** argv)
{
	int test_case;
	int T;
	
	cin >> T;
	/*
	   여러 개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
	*/
	for (test_case = 1; test_case <= T; ++test_case)
	{
		cin >> N;
		int m = 0;
		for (int i = 0; i < N; i++)
		{
			for (int j = 0; j < N; j++)
			{
				cin >> arr[i][j];
				if (m < arr[i][j])
				{
					m = arr[i][j];
				}
			}
		}
		int result = 1;
		

		for (int k = 1; k < m; k++)
		{
			memset(visit, 0, sizeof(visit));
			int count = 0;

			for (int i = 0; i < N; i++)
			{
				for (int j = 0; j < N; j++)
				{
					if (!visit[i][j] && arr[i][j] > k)
					{
						count++;
						visit[i][j] = true;
						queue<pair<int, int> > que;
						que.push({ i,j });

						while (!que.empty())
						{
							int y = que.front().first;
							int x = que.front().second;
							que.pop();

							if (y - 1 >= 0 && !visit[y - 1][x] && arr[y - 1][x] > k)
							{
								visit[y - 1][x] = true;
								que.push({ y - 1,x });
							}
							if (y + 1 < N && !visit[y + 1][x] && arr[y + 1][x] > k)
							{
								visit[y + 1][x] = true;
								que.push({ y + 1,x });
							}
							if (x - 1 >= 0 && !visit[y][x - 1] && arr[y][x - 1] > k)
							{
								visit[y][x - 1] = true;
								que.push({ y ,x - 1 });
							}
							if (x + 1 < N && !visit[y][x + 1] && arr[y][x + 1] > k)
							{
								visit[y][x + 1] = true;
								que.push({ y ,x + 1 });
							}
						}

					}
				}
			}

			if (result < count)
			{
				result = count;
			}
			
		}

		cout << "#" << test_case << " " << result << endl;
	}
	return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
반응형

'Algorithm' 카테고리의 다른 글

백준 1120번 문자열  (0) 2020.07.05
백준 12865번 평범한 배낭 oo  (0) 2020.07.05
1232. [S/W 문제해결 기본] 9일차 - 사칙연산  (0) 2020.06.04
3074. 입국심사  (0) 2020.06.03
백준 2206번 벽 부수고 이동하기  (0) 2020.06.01