문제 소개
문제 풀이
BFS를 활용한 풀이
BFS를 활용하여 풀었고, 다만 부시는 벽이 없을 경우 miro[i][j] 가 0일때 큐의 맨 앞부분에 넣어주었다.
import Foundation
let mn = readLine()!.split(separator: " ").map { Int($0)! }
let (m, n) = (mn[0], mn[1])
var miro = [[Int]]()
for _ in 0..<n {
let input = Array(readLine()!).map { Int(String($0))! }
miro.append(input)
}
let directions = [(1, 0), (-1, 0), (0, 1), (0, -1)]
var queue = [(0, 0, 0)]
var visited = Array(repeating: Array(repeating: false, count: m), count: n)
visited[0][0] = true
while !queue.isEmpty {
let poped = queue.removeFirst()
if poped.0 == n-1 && poped.1 == m-1 {
print(poped.2)
}
for direction in directions {
let i = poped.0 + direction.0
let j = poped.1 + direction.1
let cost = poped.2
if i >= 0 && i < n && j >= 0 && j < m {
if !visited[i][j] {
visited[i][j] = true
if miro[i][j] == 0 {
queue.insert((i, j, cost), at: 0)
} else {
queue.append((i, j, cost+1))
}
}
}
}
}
'→ Problems' 카테고리의 다른 글
[Algorithm] 백준 - 2250번 트리의 높이와 너비 (Swift) (0) | 2024.05.26 |
---|---|
[Algorithm] 백준 - 1991번 트리순회 (Swift) (0) | 2024.05.25 |
[Algoritm] 백준 - 13549번 숨바꼭질3 (Swift) (0) | 2024.05.23 |
[Algorithm] 백준 - 14226번 이모티콘 (Swift) (0) | 2024.05.22 |
[Algorithm] 백준 - 13913번 숨바꼭질4 (Swift) (0) | 2024.05.21 |