https://www.acmicpc.net/problem/16928
문제 풀이: bfs를 이용하여 방문한 위치를 체크. 지도를 초기화 할때, 뱀이 있다면 이동해야 하는 위치를 값으로 넣어주고 그 외의 칸은 0으로 처리. 이동하는 위치가 0이 아닌 값이라면 해당 값의 위치로 이동 및 방문 처리하는 방식으로 문제를 풀었다.
import Foundation
var map: [Int] = Array(repeating: 0, count: 101)
var visited: [Bool] = Array(repeating: false, count: 101)
let input = readLine()!.split(separator: " ").map{ Int($0)! }
for i in 0..<input[0] {
let ladder = readLine()!.split(separator: " ").map{ Int($0)! }
map[ladder[0]] = ladder[1]
}
for i in 0..<input[1] {
let snake = readLine()!.split(separator: " ").map{ Int($0)! }
map[snake[0]] = snake[1]
}
struct Horse {
let location: Int
let count: Int
}
func solution() {
var queue: [Horse] = [.init(location: 1, count: 0)]
while !queue.isEmpty {
let popHorse = queue.removeFirst()
for i in 1...6 {
var nextCoor = popHorse.location+i
if nextCoor >= 100 {
print(popHorse.count+1)
return
}
if map[nextCoor] != 0 {
nextCoor = map[nextCoor]
}
if !visited[nextCoor] {
queue.append(.init(location: nextCoor, count: popHorse.count+1))
visited[nextCoor] = true
}
}
}
}
solution()
'Algorithm > 백준' 카테고리의 다른 글
Swift) 백준 2206번 벽 부수고 이동하기 - G3 (0) | 2024.03.19 |
---|---|
Swift) 백준 1600번 말이 되고픈 원숭이 - G3 (0) | 2024.03.19 |
Swift) 백준 19237번 어른 상어 -G2 (0) | 2024.02.02 |
Swift) 백준 17142번 연구소3 - G3 (0) | 2024.02.01 |
Swift) 백준 14891번 톱니바퀴 - G5 (1) | 2024.02.01 |