cgy12306

[백준 BoJ] 10026 - 적록색약 본문

Algorithm/C++

[백준 BoJ] 10026 - 적록색약

cgy12306 2022. 2. 16. 17:05
// https://www.acmicpc.net/problem/10026
// 적록색약

#include<iostream>
#include<cstring>
using namespace std;

int N;
char map[101][101];
int visited[101][101];
int dx[] = { 1,-1,0,0 };
int dy[] = { 0,0,1,-1 };

void dfs(int x, int y, int cnt) {
	visited[x][y] = cnt;
	for (int i = 0; i < 4; i++) {
		int nx = x + dx[i];
		int ny = y + dy[i];
		
		if (nx < 0 || ny < 0 || nx >= N || ny >= N || map[x][y] != map[nx][ny]) continue;

		if (visited[nx][ny] == 0) {
			dfs(nx, ny, cnt);
		}
	}
}
void run() {

	int cnt = 1;

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			if (visited[i][j] == 0) {
				dfs(i, j, cnt);
				cnt++;
			}
		}
	}

	cout << cnt - 1 <<" ";
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	cin >> N;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			cin >> map[i][j];
		}
	}
	
	run();

	memset(visited, 0, sizeof(visited));

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			if (map[i][j] =='G') {
				map[i][j] = 'R';
			}
		}
	}
	run();
}

'Algorithm > C++' 카테고리의 다른 글

[백준 BoJ] 1357 - 최솟값과 최댓값  (0) 2022.03.04
[백준 BoJ] 10868 - 최솟값  (0) 2022.03.04
[백준 BoJ] 2589 - 보물섬  (0) 2022.02.16
[백준 BoJ] 5014 - 스타트링크  (0) 2022.02.16
[백준 BoJ] 1987 - 알파벳  (0) 2022.02.16
Comments