문제 소개
조금 복잡한 문제였다. 이모티콘, 클립보드에 대한 조건이 생각할 것이 많았다.
문제 풀이
BFS를 활용해서 풀었고, 이모티콘, 클립보드, 시간을 queue에 넣어줬다. 또한 방문은 visited 2차원 배열을 사용했다. 왜냐하면 클립보드에 저장한다는 특수한 조건이 있어서 2차원 배열로 저장했다.
import Foundation
let s = Int(readLine()!)!
var visited = Array(repeating: Array(repeating: false, count: 1001), count: 1003)
visited[1][0] = true
var queue = [(1, 0, 0)]
var idx = 0
while queue.count > idx {
let emoji = queue[idx].0
let clip = queue[idx].1
let time = queue[idx].2
idx += 1
if emoji == s {
print(time)
break
}
if emoji > 0 && emoji < 1001 {
if !visited[emoji][emoji] {
visited[emoji][emoji] = true
queue.append((emoji, emoji, time+1))
}
if !visited[emoji-1][clip] {
visited[emoji-1][clip] = true
queue.append((emoji-1, clip, time+1))
}
}
if emoji+clip < 1001 {
if !visited[emoji+clip][clip] {
visited[emoji+clip][clip] = true
queue.append((emoji+clip, clip, time+1))
}
}
}
'→ Problems' 카테고리의 다른 글
[Algorithm] 백준 - 1261번 알고스팟 (Swift) (0) | 2024.05.24 |
---|---|
[Algoritm] 백준 - 13549번 숨바꼭질3 (Swift) (0) | 2024.05.23 |
[Algorithm] 백준 - 13913번 숨바꼭질4 (Swift) (0) | 2024.05.21 |
[Algorithm] 백준 - 2146번 다리 만들기 (Swift) (0) | 2024.05.20 |
[Algorithm] 백준 - 16964번 DFS 스페셜 저지 (Swift) (0) | 2024.05.14 |