[백준] 13023 - Swift

이창형·2023년 6월 1일
0

코드

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

// 5개의 노드를 거치면 answer을 1로 바꿔주고 return하는 dfs 구현
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로 구현을 해야겠다는 생각을 했었고 내 생각이 맞았다는것 자체가 성장한 것이라고 생각한다
  • 기분이 좋다
profile
iOS Developer

0개의 댓글