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를 하나 두어 비교하는데 사용하는 것이 효율적일 것이다.