[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
}