총 두가지의 경우로 탐색을 해야하는 문제이다.
1. 색약이 아닌경우
2. 색약인 경우
Swift로 풀이할 때는, 2차원 좌표를 Point라는 별칭 type으로 관리한다.
typealias Point = (Int, Int)
visited배열을 두고, 2중 for문을 돌리며 visited가 false인 칸을 만날 때마다 bfs(_ start: Point)를 호출한다.
이때, 색약이 아닌경우는
arr[start.0][start.1] == arr[now_x][now_y]로 비교하면 되지만,
색약인 경우는 R과 G를 같은 색으로 봐야한다.
2차원 배열 전체를 돌며 R을 G로/ 혹은 G를 R로 바꾸어 똑같이 탐색하는 방법도 있지만,
그보다는 ["R": 0, "G": 0, "B": 1]과 같은 Dictionary를 하나 두어 비교하는데 사용하는 것이 효율적일 것이다.
백준 14502: 연구소 (Swift) (0) | 2022.08.20 |
---|---|
백준 1806: 부분합 (Swift) (0) | 2022.08.20 |
백준 1654: 랜선 자르기 (Swift) (0) | 2022.08.17 |
백준 2470: 두 용액 ( Swift ) (0) | 2022.08.15 |
백준 3273: 두수의 합 (Swift) (0) | 2022.08.15 |