방금 저도 삽질해가며 푼 결과 시간을 줄이는 여러 방법을 찾았습니다.
첫번째는 다익스트라 함수 내부에 있는 let distance 변수를 생성하지 않는 것이었습니다.
저도 처음에는
let distance와
let next
라는 변수를 두 개 만들어서 둘을 따로 사용했는데, 이 부분만 제거하고 값을 바로 할당해주니 시간초과를 벗어날 수 있었습니다.
일단은 이거 하나만 했는데도 시간초과에서 탈출했습니다.
변수 생성없이도 값을 할당 할 수 있는 부분은 그렇게 하는 편이 좋은 것 같습니다.
두번째는 라이노 님의 fileIO 클래스를 사용하는 것입니다.
제가 처음 성공했을 때는 700ms 정도 나왔는데, 라이노 님의 fileIO 클래스를 적용하고 나니 110ms 대로 현재 속도에선 1등입니다.
둘 중 하나만 해도 시간 초과를 면할 거 같습니다.
다만 첫번째 방법은 시간을 얼마나 줄여주는 지는 잘 모르겠어서 일단 한 번 적용해보는걸 추천합니다.
++
출력할 때 print함수를 여러번 사용하게끔 두면 시간이 더 오래걸립니다.
var answer = ""
를 만들어서 answer에 계속 답과 개행문자를 append하는 식으로 큰 문자열을 하나 만든다음에 print함수를 한 번만 사용해서 출력하는 방식이 시간 감소에 더 도움이 됩니다.
whdvy3 2년 전 1
신기하게도 NodePriority 구조체안의 함수를 위에두고 변수를 밑에두면 시간초과가 나고,
저 상태에서 NodePriority 구조체안의 함수안의 '<'를 '>'로 바꿔도 시간초과가 나고,
지금상태에서는 틀렸다고나옵니다.