mooon๐ŸŒ™
STUDY
mooon๐ŸŒ™
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (170)
    • ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ (147)
      • ๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (53)
      • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1 (13)
      • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ž…๋ฌธ (54)
      • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] SQL ๊ณ ๋“์  Kit (27)
    • BACK (4)
      • Spring (3)
      • PHP (0)
    • FRONT (5)
    • DevOps (8)
      • Jenkins (8)
    • GitHub๐ŸŒฑ (2)
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (1)
      • SQL (1)
    • Error ๐Ÿ’ฅ (0)
      • php (2)
    • ๐Ÿ˜‹ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • โญ ๊นƒํ—ˆ๋ธŒ
  • ๐Ÿ’• ๋ฐฉ๋ช…๋ก
  • ๐Ÿ’ฅ ํƒœ๊ทธ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • DevOps
  • SQL ๊ณ ๋“์  Kit
  • SQL
  • ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ž…๋ฌธ
  • Python
  • c++
  • ๋ฐฑ์ค€

์ตœ๊ทผ ๊ธ€

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
mooon๐ŸŒ™

STUDY

๋ฐฑ์ค€ 2573 _ ๋น™์‚ฐ
์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ/๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฐฑ์ค€ 2573 _ ๋น™์‚ฐ

2020. 9. 26. 19:16
728x90

www.acmicpc.net/problem/2573

 

2573๋ฒˆ: ๋น™์‚ฐ

์ฒซ ์ค„์—๋Š” ์ด์ฐจ์› ๋ฐฐ์—ด์˜ ํ–‰์˜ ๊ฐœ์ˆ˜์™€ ์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ์ •์ˆ˜ N๊ณผ M์ด ํ•œ ๊ฐœ์˜ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. N๊ณผ M์€ 3 ์ด์ƒ 300 ์ดํ•˜์ด๋‹ค. ๊ทธ ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ ์ค„๋งˆ๋‹ค ๋ฐฐ์—ด์˜ ๊ฐ ํ–‰์„ ๏ฟฝ

www.acmicpc.net


โœจ ๋‚ด ์†Œ์Šค ์ฝ”๋“œ

#include<iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <string.h>

int route[4][2] = { {-1,0},{0,-1},{0,1},{1,0} };
bool visit[301][301];
using namespace std;
int v[301][301];
int N, M;

void DFS(int init_x, int init_y) {
	visit[init_x][init_y] = true;

	for (int i = 0; i < 4; i++) {
		int nx = init_x + route[i][0];
		int ny = init_y + route[i][1];

		if (nx < 1 || nx >= N - 1 || ny < 1 || ny >= M - 1) continue;
		if (v[nx][ny] > 0 && !visit[nx][ny]) DFS(nx, ny);
	}
}

void year() {
	int vec[301][301];
	for (int x = 0; x < N; x++)
		for (int y = 0; y < M; y++)
			vec[x][y] = v[x][y];
	for (int i = 1; i < N - 1; i++) {
		for (int j = 1; j < M - 1; j++) {
			if (vec[i][j] != 0) {
				int temp = 0;
				for (int z = 0;z < 4;z++) {
					if (vec[i + route[z][0]][j + route[z][1]] == 0) {
						temp++;
					}
				}
				if (v[i][j] - temp < 0) {
					v[i][j] = 0;
				}
				else {
					v[i][j] = v[i][j] - temp;
				}
			}
			
		}
	}
}

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	vector<int> t;
	int result = 0;
	cin >> N >> M;
	

	for (int i = 0; i < N;i++) {
		for (int j = 0;j < M;j++) {
			cin >> v[i][j];
		}
	}

	while (1) {
		int island_count=0;
		memset(visit, false, sizeof(visit));
		bool check=false;
		for (int i = 1; i < N - 1; i++) {
			for (int j = 1; j < M - 1; j++) {
				if (v[i][j] > 0 && !visit[i][j]) {
					island_count++;
					if (island_count >= 2) {
						check = true;
						break;
					}
					DFS(i, j);
				}
			}
		}
		if (check) break;
		if (island_count == 0) {
			cout << "0";
			return 0;
		}
		year();
		result++;
		
	}
	cout << result;

	return 0;
}

 

๐Ÿ™ ๋ฌธ์ œ ํ’€์ด

DFS๋กœ ํƒ์ƒ‰ -> ๋ฉ์–ด๋ฆฌ๊ฐ€ ๋ช‡๊ฐœ์ธ์ง€ ์ฐพ๊ธฐ

 

year() -> 1๋…„์ด ์ง€๋‚ฌ์„๋•Œ์˜ ๋น™์‚ฐ ๋ชจ์Šต์œผ๋กœ ๋ฐ”๊พธ๊ธฐ

์ด๋•Œ, ์ธ์ ‘ํ•œ 0์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” ๊ฒƒ์€ ์•„๋ž˜์˜ ๊ฒฝ์šฐ๋•Œ๋ฌธ์— ๋น™์‚ฐ์˜ ๋ณต์‚ฌ๋ณธ์œผ๋กœ ํ•˜์—ฌ์•ผ ๋œ๋‹ค

4๋Š” ์›๋ž˜ ๊ทผ์ ‘ํ•œ 0์ด 1๊ฐœ ๋ฐ–์— ์—†์–ด์„œ 3์ด ๋˜์–ด์•ผ ๋˜๋‚˜, ์ด์ „์— 0์ด ๋˜์–ด๋ฒ„๋ฆฐ 2๋•Œ๋ฌธ์— 4๊ฐ€ 3์ด ์•„๋‹ˆ๋ผ 2๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฌ๋Š” ์ผ์ด ์ผ์–ด๋‚œ๋‹ค

 

โญ ๋ฌธ์ œ ํ’€์ด ๊ฒฐ๊ณผ

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    '์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ/๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ๋ฐฑ์ค€ 10026 _ ์ ๋ก์ƒ‰์•ฝ
    • ๋ฐฑ์ค€ 1003 _ ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜
    • ๋ฐฑ์ค€ 1541 _ ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ
    • ๋ฐฑ์ค€ 11047 _ ๋™์ „ 0
    mooon๐ŸŒ™
    mooon๐ŸŒ™
    ๊ฐœ๋ฐœ ๊ณต๋ถ€ ๊ธฐ๋ก

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”