본문 바로가기

BFS2

[Algorithm/BOJ] 2589 - 보물섬 (BFS) Swift 문제 풀이: 문제에서 시작점이 주어지지 않기 때문에 직접 기준점을 잡아주어야 한다. 육지(L)를 기준으로 시작점을 잡는다. 그 좌표에서 지도를 벗어나지 않고 상화좌우로 이동할 좌표가 육지라는 선에서 이동거리를 1씩 늘려서 갈 수 있는 모든 좌표에 대한 거리를 나타내는 배열에 저장한다. 그리고 시작점에서 갈 수 있는 최대 거리(거리를 나타내는 배열의 최대 값)랑 이 문제의 답이 되는 변수와 비교하여 큰 것을 변수에 저장한다. 모든 육지(L)의 좌표에 대해서 반복한다. 코드: typealias Coord = (r: Int, c: Int) let input = readLine()!.split(separator: " ").map { Int(String($0))! } let n = input[0] let m = .. 2021. 3. 14.
[Algorithm/BOJ] 5014 - 스타트링크 (BFS) Swift 문제풀이: 스타트링크는 총 F층으로 이루어진 고층 건물에 사무실이 있고, 스타트링크가 있는 곳의 위치는 G층이다. 강호가 지금 있는 곳은 S층이고, 이제 엘리베이터를 타고 G층으로 이동하려고 한다. -> 총 F층이 있는 고층 건물에서 S층에서 엘리베이터를 타고 G층으로 이동한다. 보통 엘리베이터에는 어떤 층으로 이동할 수 있는 버튼이 있지만, 강호가 탄 엘리베이터는 버튼이 2개밖에 없다. U버튼은 위로 U층을 가는 버튼, D버튼은 아래로 D층을 가는 버튼이다. (만약, U층 위, 또는 D층 아래에 해당하는 층이 없을 때는, 엘리베이터는 움직이지 않는다) -> 엘리베이터에 U층만큼 올라가는 U버튼과 D층만큼 내려가는 D버튼만 있다. 두 버튼을 몇 번 눌러야 S층에서 G층으로 갈 수 있는지 구하는 것이고 G.. 2021. 2. 23.