[C++] 백준 10026 - 적록색약
🔐 백준 10026 - 적록색약
https://www.acmicpc.net/problem/10026
🔑 풀이
크기가 N × N인 그림이 주어집니다.
각 칸은 R, G, B 중 하나의 색으로 칠해져 있습니다.
- 일반인은 R, G, B를 모두 구분하며,
- 적록색약인 사람은 R과 G를 같은 색으로 인식합니다.
이때, 같은 색이 상하좌우로 인접한 구역을 하나로 본다고 할 때, 일반인과 적록색약인 사람이 보는 구역의 수를 각각 구하는 문제입니다.
여러가지 방법이 존재하겠지만, 일반인 그림과 적록색약용 그림 두 가지를 따로 계산하는 방법을 사용했습니다.
전체적인 알고리즘은 다음과 같습니다.
- 모든 칸을 순회하면서,
- 방문하지 않은 칸을 시작점으로 BFS 탐색을 수행하고,
- 같은 색으로 연결된 모든 칸을 한 구역으로 묶습니다.
- BFS가 한 번 끝날 때마다 구역 수를 1 증가시킵니다.
🧩 코드
✨ 주의
이 글에서 제시한 코드는 문제를 해결할 수는 있지만, 최적의 풀이 방법은 아닙니다.
더 빠른 알고리즘이나 다른 접근법이 있을 수 있으니, 아이디어 참고 정도로 활용해 주세요.
Leave a comment