[백준] 1260 - Swift

이창형·2023년 5월 15일
0

코드

import Foundation

let input = readLine()!.split(separator: " ").map{Int(String($0))!}
let N = input[0]
let M = input[1]
let V = input[2]

var grid = [Int:[Int]]()

for i in 0..<M {
    let a = readLine()!.split(separator: " ").map{Int(String($0))!}
    let start = a[0]
    let end = a[1]
    
    if grid[start] == nil {
        grid[start] = [end]
    } else {
        grid[start]!.append(end)
    }
    
    if grid[end] == nil {
        grid[end] = [start]
    } else {
        grid[end]!.append(start)
    }
}

for key in grid.keys {
    grid[key]?.sort(by: <)
}



func bfs (_ grid: [Int: [Int]], _ start: Int) -> String {
    var visited = [start]
    var queue = [start]
    while !queue.isEmpty {
        let now = queue.removeFirst()
        
        if let node = grid[now] {
            for i in node{
                if visited.contains(i) {
                    continue
                } else {
                    visited.append(i)
                    queue.append(i)
                }
            }
        }
        
    }

    return visited.map { String($0) }.joined(separator: " ")
}

var route = [Int]()
var answer = ""

func dfs (_ start: Int) {
    
    if route.contains(start) {
        return
    }
    
    route.append(start)
    
    if let graph = grid[start] {
        for i in graph {
            dfs(i)
        }
        
    }
}


dfs(V)
print(route.map { String($0) }.joined(separator: " "))
print(bfs(grid, V))

회고

  • 기본적인 dfs/bfs를 확인하는 문제였다
  • 백준 문제를 swift로 처음 풀어 보았는데 입출력 구현하는게 생각보다 까다롭다
  • 백준 문제 자주 풀어야겠다
profile
iOS Developer

0개의 댓글