새소식

인기 검색어

백준/실버

[Swift] 2178번 : 미로탐색

  • -
import Foundation

var inputs = readLine()!.components(separatedBy: " ").compactMap { Int($0) }
let n = inputs.first!
let m = inputs.last!

var boards: [[Bool]] = []

for _ in 0..<n {
    let inputs: [Bool] = readLine()!.map { $0 == "1" }
    boards.append(inputs)
}

print(bfs(n, m))

func bfs(_ row: Int, _ col: Int) -> Int {

    let dx = [1, 0, -1, 0]
    let dy = [0, 1, 0, -1]
    
    var queue: [(Int, Int)] = []
    var dist = Array(repeating: Array(repeating: -1, count: col), count: row)

    dist[0][0] = 1
    queue.append((0,0))

    while !queue.isEmpty {
        let (x, y) = queue.removeFirst()
        for i in 0..<4 {
            let nx = x + dx[i]
            let ny = y + dy[i]
            
            if (nx < 0 || row <= nx || ny < 0 || col <= ny) ||
                dist[nx][ny] >= 0 ||
                !boards[nx][ny] { continue }
            
            dist[nx][ny] = dist[x][y] + 1
            queue.append((nx, ny))
        }
    }
    
    return dist[row-1][col-1]
}

'백준 > 실버' 카테고리의 다른 글

[Swift] 7672번 : 나이트의 이동  (0) 2024.03.18
[Swift] 1012번 : 유기농 배추  (0) 2024.03.18
[Swift] 1697번 : 숨바꼭질  (0) 2024.03.18
[Swift] 1926번 : 그림  (0) 2024.02.05
[Swift] 10773번 : 제로  (0) 2024.01.12
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.