whdvy3   2년 전

신기하게도 NodePriority 구조체안의 함수를 위에두고 변수를 밑에두면 시간초과가 나고,

저 상태에서 NodePriority 구조체안의 함수안의 '<'를 '>'로 바꿔도 시간초과가 나고,

지금상태에서는 틀렸다고나옵니다.

nhg1113   2년 전

방금 저도 삽질해가며 푼 결과 시간을 줄이는 여러 방법을 찾았습니다.

첫번째는 다익스트라 함수 내부에 있는 let distance 변수를 생성하지 않는 것이었습니다.

저도 처음에는 

let distance와

let next

라는 변수를 두 개 만들어서 둘을 따로 사용했는데, 이 부분만 제거하고 값을 바로 할당해주니 시간초과를 벗어날 수 있었습니다.

일단은 이거 하나만 했는데도 시간초과에서 탈출했습니다.

변수 생성없이도 값을 할당 할 수 있는 부분은 그렇게 하는 편이 좋은 것 같습니다.

두번째는 라이노 님의 fileIO 클래스를 사용하는 것입니다.

제가 처음 성공했을 때는 700ms 정도 나왔는데, 라이노 님의 fileIO 클래스를 적용하고 나니 110ms 대로 현재 속도에선 1등입니다.

둘 중 하나만 해도 시간 초과를 면할 거 같습니다.

다만 첫번째 방법은 시간을 얼마나 줄여주는 지는 잘 모르겠어서 일단 한 번 적용해보는걸 추천합니다.

++

출력할 때 print함수를 여러번 사용하게끔 두면 시간이 더 오래걸립니다.

var answer = ""

를 만들어서 answer에 계속 답과 개행문자를 append하는 식으로 큰 문자열을 하나 만든다음에 print함수를 한 번만 사용해서 출력하는 방식이 시간 감소에 더 도움이 됩니다.

whdvy3   2년 전

여기서도 도움을 주시네요 ㅠㅠ

정말 감사드립니다!!

댓글을 작성하려면 로그인해야 합니다.