-
[2178번] 미로 탐색 / Swift프로그래밍/코딩테스트 2021. 6. 10. 13:44
https://www.acmicpc.net/problem/2178
BFS를 이용해서 풀었다.
큐를 사용할 때 직접구현해야하나 하다가 그냥 배열로 사용했는데 통과되었다.
import Foundation func solution() -> Int { let direction: [(dy: Int, dx: Int)] = [(-1,0),(1,0),(0,-1),(0,1)] let size = readLine()!.split(separator: " ").map { Int($0)! } let n = size[0] let m = size[1] var board = [[Int]]() for _ in 0..<n { board.append(readLine()!.map{ Int(String($0))! }) } board[0][0] = 1 var queue = [(row: Int, col: Int)]() // row, col queue.append((0,0)) while !queue.isEmpty { let element = queue.removeFirst() for d in direction { if case let row = element.row + d.dy, case (0..<n) = row, case let col = element.col + d.dx, case (0..<m) = col { if board[row][col] == 0 { continue } // 벽일때 if board[row][col] == 1 { // 미방문 board[row][col] = board[element.row][element.col] + 1 queue.append((row, col)) } } } } return board[n-1][m-1] } print(solution())
반응형'프로그래밍 > 코딩테스트' 카테고리의 다른 글
[2018 카카오 BLIND 1차] 캐시 / Swift (0) 2021.06.11 [LeetCode] 155. Min Stack / Swift (0) 2021.06.11 [다이나믹프로그래밍] 개미전사 / Swift (0) 2021.06.08 [프로그래머스] 2개 이하로 다른 비트 / Swift (0) 2021.06.07 [2018 카카오 BLIND 1차] 프렌즈4블록 / Swift (0) 2021.06.07