BFS 3

백준 10026번 Swift 알고리즘 연습 - 적록색약_BFS

원래 BFS 문제를 다시 풀때마다 함수를 만들어내는게 꽤나 오래 걸렸는데 이젠 좀 익숙해진거 같다. 다만 은근히 문제들마다 조건이 달라서 까딱 잘못하면 조건을 만족시키기 못하는 경우가 있으니 이를 유의하는게 좋겠다. 이 문제를 풀면서 생각한 논리적 흐름은 다른 BFS 문제들과 비슷한 과정을 겪는다. 우선 Graph를 그려주고, 움직일 수 있는 방향을 설정해준다. 그리고 내가 해당 위치를 방문했는지 안했는지 visited 배열을 이용해 확인해준다. 이 문제의 경우 적록색약인 경우 R과 G를 동일하게 판단해야하고 적록색약이 아닌 경우 R G B를 각각의 값으로 봐주어야 하기 때문에 bfs 함수에도 이를 반영해야한다. 따라서 colorWeak이 true인 경우 RG를 묶어서 한번에 이동하고 false인 경우는..

백준 14716번 Swift 알고리즘 연습 - 현수막_BFS

요즘 BFS 문제를 골라서 푸는 중인데... 내가 고른 문제들이 상당히 비슷한 유형인건지 원래 BFS 문제들의 유형이 이렇게 동일하게 출제되는건지 잘 모르겠다... ㅋㅋㅋ 그만큼 BFS, DFS 문제들은 유형이 정형화되어 있는 것 같다. 이 문제를 풀면서 생각한 논리적 흐름은 다른 문제들과 비슷한 과정을 겪는다. 우선 Graph를 그려주고, 움직일 수 있는 방향을 설정해준다. 그 다음은 bfs 함수를 이중 for문으로 돌려서 완전탐색해주면 끝난다. 이때 bfs의 경우는 현재 탐색하고 있는 tuple을 기준으로 동서남북 이동하여 아직 방문하지 않은 지역이었다면 0을 할당해준다. 예제의 입력값을 예시로 들면, "A" "N" "T"가 Graph 상에 기록되어 있다. 이때 A글자를 따라서 만들어져 있던 1들을 ..

백준 3184번 Swift 알고리즘 연습 - 양_BFS

요즘 계속 알고리즘 스터디를 진행하며 문제를 풀고 있는데... 평소보다 푸는 양이 늘고 면접 + iOS 개발 공부까지 하다보니 도저히 블로그에 기록을 남기기가 쉽지 않다..! 그래도 내가 푸는 몇몇 문제들이 Swift로 블로깅 되어 있지 않은 것을 보고, 그런 문제들 위주로 최대한 기록을 남겨봐야겠다는 생각이 들었다. 이 문제는 전형적인 BFS 문제이다. 정해진 형태의 공간 내에 한칸씩 이동하면서 양과 늑대의 개수를 비교해주면 된다. 이 문제를 풀면서 생각한 논리적 흐름은 우선 입력받은 값들을 전부 2차원 배열에 세팅해준다. visit 배열을 만들어 내가 확인하고 지나간 곳인지 아닌지를 표시해준다. 수직과 수평으로만 이동할 수 있다고 하였으므로 dx, dy를 활용하여 이동 가능 범위를 제한한다. 2차원 ..