[Swift] 백준, 특정 거리의 도시 찾기

문제 링크

특정 거리의 도시 찾기

코드

이거 정답 아닙니다.. 일단 테스트 케이스는 동일한 결과가 나오긴하는데.. 메모리 초과떠요.. Swift라서 그런지는 잘 모르겠지만.. 아직 해결은 못했네요 다른 사람 코드를 참고하고 싶은데 Swift로 문제를 푼 블로그는 없더라구요 문제점이 뭔지 아신다면 nkb5813@naver.com로 메일 주시기바랍니다 ㅜㅜ

//
//  main.swift
//  특정거리도시찾기
//
//  Created by 남기범 on 2020/12/24.
//  Copyright © 2020 남기범. All rights reserved.
//

import Foundation

let line = readLine()!
let lineArr = line.components(separatedBy: " ").map { Int($0)! }
let cityCount = lineArr[0]
let loadCount = lineArr[1]
let length = lineArr[2]
let startNumber = lineArr[3]

var arr = Array(repeating: Array(repeating: 0, count: cityCount), count: cityCount)

for _ in 0..<loadCount {
    let line2 = readLine()!.components(separatedBy: " ").map { Int($0)! }
    arr[line2[0]-1][line2[1]-1] = 1
}

var result = bfs(startNumber-1)

if result.isEmpty {
    print(-1)
} else {
    result.sort(by: <)
    for i in 0..<result.count {
        print(result[i])
    }
}

func bfs(_ start: Int) -> [Int] {
    var result = [Int]()
    var queue = [start]
    var len = Array(repeating: 0, count: cityCount)
    
    while !queue.isEmpty {
        let point = queue.removeFirst()
        
        if len[point] == length {
            result.append(point+1)
        }
        
        for i in 0..<cityCount {
            if arr[point][i] == 1 && len[i] == 0 {
                queue.append(i)
                len[i] = len[point] + 1
            }
        }
    }

    return result
}