[C++] 백준 10026 - 적록색약

🔐 백준 10026 - 적록색약

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



🔑 풀이

크기가 N × N인 그림이 주어집니다. 각 칸은 R, G, B 중 하나의 색으로 칠해져 있습니다.

  • 일반인은 R, G, B를 모두 구분하며,
  • 적록색약인 사람은 R과 G를 같은 색으로 인식합니다.

이때, 같은 색이 상하좌우로 인접한 구역을 하나로 본다고 할 때, 일반인과 적록색약인 사람이 보는 구역의 수를 각각 구하는 문제입니다.

여러가지 방법이 존재하겠지만, 일반인 그림과 적록색약용 그림 두 가지를 따로 계산하는 방법을 사용했습니다.

전체적인 알고리즘은 다음과 같습니다.

  1. 모든 칸을 순회하면서,
  2. 방문하지 않은 칸을 시작점으로 BFS 탐색을 수행하고,
  3. 같은 색으로 연결된 모든 칸을 한 구역으로 묶습니다.
  4. BFS가 한 번 끝날 때마다 구역 수를 1 증가시킵니다.



🧩 코드


✨ 주의
이 글에서 제시한 코드는 문제를 해결할 수는 있지만, 최적의 풀이 방법은 아닙니다.
더 빠른 알고리즘이나 다른 접근법이 있을 수 있으니, 아이디어 참고 정도로 활용해 주세요.

Categories:

Updated:

Leave a comment