https://www.acmicpc.net/problem/10026
DFS돌고 R을 G로 바꾸고 다시 DFS돌기
#include <iostream>
#define MAX 101
using namespace std;
bool visited[MAX][MAX];
char map[MAX][MAX];
int dx[4] = {1,0,-1,0}; //오른쪽 밑 왼쪽 위
int dy[4] = {0,-1,0,1};
int n;
void change(){
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(map[i][j] == 'G'){
map[i][j] = 'R';
}
visited[i][j] = false;
}
}
}
void dfs(int x,int y){
if(visited[x][y]){
return;
}
visited[x][y] = true;
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){
continue;
}
if(map[nx][ny] == map[x][y] && visited[nx][ny] == false){
dfs(nx,ny);
}
}
}
int main(void){
cin >> n;
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
cin >> map[i][j];
}
}
int cnt0 = 0;
int cnt1 = 0;
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(visited[i][j] == false){
dfs(i,j);
cnt0++;
}
}
}
change();
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(visited[i][j] == false){
dfs(i,j);
cnt1++;
}
}
}
cout << cnt0 << ' ' << cnt1;
}
https://programmers.co.kr/learn/courses/30/lessons/12916
function solution(s){
var answer = true;
var p = 0;
var y = 0;
for(var i = 0;i<s.length;i++){
if(s[i] == 'p' || s[i] == 'P'){
p++;
}
else if(s[i] == 'y' || s[i] == 'Y'){
y++;
}
}
if(p == y){
return true;
}
else{
return false;
}
}
'자료구조' 카테고리의 다른 글
백준 23056 참가자 명단 C++ (0) | 2022.06.01 |
---|---|
백준 수 정렬하기 3 (0) | 2022.05.20 |
백준 12789 도키도키 간식드리미 C++ (0) | 2022.05.01 |
백준 17299 오등큰수 C++ (0) | 2022.04.25 |
백준 14753 C++ (0) | 2022.04.21 |