문제 소개
문제 풀이
BFS, DFS 두가지 풀이 방법이 있다. 시간은 둘다 22ms, 24ms 로 별 차이 없는 듯 하다.
BFS
import Foundation
let s = readLine()!
let t = readLine()!
func bfs() {
var queue = [s]
var idx = 0
while queue.count > idx {
let poped = queue[idx]
idx += 1
if poped == t {
print(1)
exit(0)
}
if poped.count > 50 { break }
if t.contains(poped) || t.contains(String(poped.reversed())) {
queue.append(poped + "A")
queue.append(String((poped + "B").reversed()))
}
}
}
bfs()
print(0)
DFS
import Foundation
let s = readLine()!
let t = readLine()!
func dfs(_ current: String) {
if current == t {
print(1)
exit(0)
}
if t.contains(current) || t.contains(String(current.reversed())) {
dfs(current + "A")
dfs(String((current + "B").reversed()))
}
}
dfs(s)
print(0)
'→ Problems' 카테고리의 다른 글
[Algorithm] 백준 - 16933번 벽 부수고 이동하기 3 (Swift) (1) | 2024.06.13 |
---|---|
[Algorithm] 백준 - 14442번 벽 부수고 이동하기 2 (Swift) (0) | 2024.06.13 |
[Algorithm] 백준 - 16946번 벽 부수고 이동하기 4 (Swift) (0) | 2024.06.12 |
[Algorithm] 백준 - 2206번 벽 부수고 이동하기 (Swift) (0) | 2024.06.11 |
[Algorithm] 백준 - 12886번 돌 그룹 (Swift) (0) | 2024.06.10 |