[5014] 스타트링크

toru·2022년 9월 16일
0
let p = readLine()!.split(separator: " ").map{Int(String($0))!}
let (end,start,target,up,down) = (p[0],p[1],p[2],p[3],p[4])
var visited = [Bool](repeating: false, count: 1000001)
var result = 0

func bfs()-> Int {
    var q = [(start,0)]
    var index = 0    
    while index < q.count {
        let now = q[index].0
        let cnt = q[index].1
        let u = now+up
        let d = now-down
        index += 1
        
        if now == target {
            return cnt
        }
        if u <= end, !visited[u] {
            visited[u] = true
            q.append((u, cnt+1))
        }
        if 1 <= d, !visited[d] {
            visited[d] = true
            q.append((d, cnt+1))
        }
    }
    return -1
}
result = bfs()
print(result == -1 ? "use the stairs" : result)
profile
iOS

0개의 댓글