반응형
https://www.acmicpc.net/problem/2178
import Foundation
public struct Queue<T> {
fileprivate var array = [T]()
public var isEmpty: Bool {
return array.isEmpty
}
public var count: Int {
return array.count
}
public mutating func enquque(_ element: T) {
array.append(element)
}
public mutating func dequeue() -> T? {
if isEmpty {
return nil
} else {
return array.removeFirst()
}
}
public var front: T? {
return array.first
}
}
let l = readLine()!.split(separator: " ").map{ Int(String($0))! }
let n = l[0]
let m = l[1]
var list:[[Int]] = []
var visited:[[Bool]] = []
for _ in 1...n {
let l = Array(readLine()!).map{ Int(String($0))! }
list.append(l)
visited.append(Array.init(repeating: false, count: m))
}
let dir = [[0,1],[0,-1],[1,0],[-1,0]]
var queue = Queue<[Int]>()
func bfs(i:Int, j:Int) {
visited[i][j] = true
queue.enquque([i,j])
let num = list[i][j]
while !queue.isEmpty {
let q = queue.dequeue()!
for l in dir {
let x = q[0]+l[0]
let y = q[1]+l[1]
let num = list[q[0]][q[1]]
if x >= 0 && x < n && y >= 0 && y < m && !visited[x][y] && list[x][y] == 1 {
queue.enquque([x,y])
list[x][y] = num+1
}
}
}
}
bfs(i:0, j:0)
print(list[n-1][m-1])
반응형
'# 02 > Swift - CTP' 카테고리의 다른 글
[Swift] 백준! 2667번 - 단지번호붙이기 (0) | 2023.01.20 |
---|---|
[Swift] 백준! 2606번 - 바이러스 (0) | 2023.01.20 |
[Swift] 백준! 1260번 - DFS와 BFS (0) | 2023.01.19 |
[Swift] 백준! 2061번 - 좋은 암호 (0) | 2023.01.16 |
[Swift] 백준! 2447번 - 별 찍기 - 10 (0) | 2023.01.16 |