Swift알고리즘
백준 10026: 적록색약 (Swift)
앱등개발자IOS
2022. 8. 19. 16:09
총 두가지의 경우로 탐색을 해야하는 문제이다.
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를 하나 두어 비교하는데 사용하는 것이 효율적일 것이다.