코드
import Foundation
let num = readLine()!.split(separator: " ").map{Int($0)!}
let N = num[0]
let M = num[1]
var dic = [Int:[Int]]()
for _ in 1...M {
let a = readLine()!.split(separator: " ").map{Int($0)!}
let x = a[0]
let y = a[1]
if dic[x] != nil {
dic[x]!.append(y)
} else {
dic[x] = [y]
}
if dic[y] != nil {
dic[y]!.append(x)
} else {
dic[y] = [x]
}
}
var visited = Array(repeating: false, count: N)
var answer = 0
func dfs (_ strat: Int, _ count: Int) {
if count == 4 {
answer = 1
return
}
for i in dic[strat] ?? [] {
if !visited[i] {
visited[i] = true
dfs(i, count+1)
visited[i] = false
}
}
}
for i in 0..<N {
if answer == 1 {
break
}
visited[i] = true
dfs(i, 0)
visited[i] = false
}
print(answer)
회고
- dfs 구현하는데 시간이 오래 걸렸다
- 하지만 골드5 문제를 dfs로 구현을 해야겠다는 생각을 했었고 내 생각이 맞았다는것 자체가 성장한 것이라고 생각한다
- 기분이 좋다