[10026] 적록색약 , c++

2019. 11. 15. 19:08·DEV/PS

한줄 후기 : 갈길이 멀다..

 

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

 

10026번: 적록색약

문제 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록), B(파랑) 중 하나를 색칠한 그림이 있다. 그림은 몇 개의 구역으로 나뉘어져 있는데, 구역은 같은 색으로 이루어져 있다. 또, 같은 색상이 상하좌우로 인접해 있는 경우에 두 글자는 같은 구역에 속한다. (색상의 차이를 거의 느끼지 못하는 경우도 같은

www.acmicpc.net

 

 

DFS/BFS 문제로 처음에 BFS 쓰려다 넘 빡쳐서 DFS를 써서 풀었다.

적록색약인 사람으로 계산할 때는 visit 초기화 해주고, color 배열에서 'G'를 'R'로 바꿔주어야 한다.

dx,dy를 더했을 때 범위가 이상한지도 체크해줘야 함

 

#include <iostream>
using namespace std;

char color[101][101];
bool visit[101][101]={false};
int n;
int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};

void dfs(int p,int q, char c){
	visit[p][q] = true;
	for(int i=0; i<4; i++){
		int nextx = p+dx[i];
		int nexty = q+dy[i];
		if(nextx >= 0 && nextx < n && nexty >=0 && nexty <n){
			if(!visit[nextx][nexty] && c == color[nextx][nexty]){
				dfs(nextx, nexty, color[nextx][nexty]);
			}
		}
	}
}
int all(){
	int cnt = 0;
	for(int i=0; i<n; i++){
		for(int j=0; j<n; j++){
			if(!visit[i][j]){
				dfs(i,j,color[i][j]);
				cnt++;
			}
		}
	}
	return cnt;
}
int main(){
	int count1, count2;
	cin >> n;
	for(int i=0; i<n; i++){
		scanf("%s", &color[i]);
	}
	count1 = all();
	for(int i=0; i<n; i++){
		for(int j=0; j<n; j++){
			visit[i][j] = false;
			if(color[i][j] == 'G')	color[i][j] = 'R';
		}
	}
	count2 = all();
	
	cout << count1 << " " << count2;
}

'DEV > PS' 카테고리의 다른 글

[2056] 작업, c++  (0) 2021.02.04
solved ac 플래티넘5 달성  (0) 2021.02.04
[17521] ACM-ICPC 2019 C번 - byte coin , c++  (2) 2019.10.09
[14753] MultiMax, c++  (0) 2019.09.20
[1463] 1로 만들기, c++  (0) 2019.09.17
'DEV/PS' 카테고리의 다른 글
  • [2056] 작업, c++
  • solved ac 플래티넘5 달성
  • [17521] ACM-ICPC 2019 C번 - byte coin , c++
  • [14753] MultiMax, c++
jobchae
jobchae
말하는 감자지만, 코드를 끄적이는 Node.js 백엔드 개발자입니다.
  • jobchae
    JOBCHAE
    jobchae
  • 전체
    오늘
    어제
    • 🚀 JOBCHAE (182)
      • DEV (151)
        • PS (108)
        • Node.js (12)
        • React (3)
        • docker (1)
        • 잡다한 개발 일지 (21)
        • injection (1)
        • JS, TS (3)
        • DB (2)
      • 축구 (0)
      • 일상 (19)
      • 영화 (3)
      • 음악 (8)
  • 블로그 메뉴

    • 💻 Github
    • 🙋🏻 Linkedin
    • 📖 방명록
  • 링크

    • PS Github
  • 공지사항

  • 인기 글

  • 태그

    리액트
    이분탐색
    위상정렬
    DFS
    react
    개발
    mongoDB
    Nest.js
    Express
    우선순위큐
    일상
    슬랙봇
    BFS
    SOPT
    DP
    PS
    node.js
    GitHub
    백준
    알고리즘
    nodejs
    앱잼
    솝트
    슬랙
    회고
    typescript
    db
    boj
    JavaScript
    렛츠락페스티벌
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
jobchae
[10026] 적록색약 , c++
상단으로

티스토리툴바