adxx   3년 전

bfs로 AC 맞은 코드의 수행시간을 보면 0.3초입니다.

전에 제가 다익스트라로 1억번 정도 연산하는 문제에서 0.28초 걸렸습니다.(우연히 오늘 같은 문제 질문글이 있길래 새로 짜서 AC받았는데 수행시간 같았습니다)

그럼 이 문제는 N이 10만개 있으니까 간선이 1,000개 정도 있다는 건데 요리조리 생각을 해 봐도 왜 1,000개인지 모르겠습니다.

다시 생각해 보면 아무것도 모르고 문제를 푼 것 같은 기분이라 영 그렇네요

djm03178   3년 전

맞으신 코드는 0.3초가 아니라 0.03초입니다.

djm03178   3년 전

그리고 다익스트라의 시간 복잡도는 구현에 따라 조금씩 다르지만 정점과 간선 개수의 곱만큼이 걸리는 구현체는 들어보지 못했습니다. 정답을 받으신 코드는 대략 O((정점 + 간선)log(간선)) 정도가 걸리는 코드입니다.

adxx   3년 전

0.28이 아니라 0.028이었습니다.

대략 2천7백만번돌리면 0.9초 (2700*10*1000)

0.03초 걸렸으니 총 27만번

대략 30만번이라 하면 정점이 10만개이고 V+E이니까 간선이 20만개?

생각해보면 그냥 일직선위에서 쭉 가는거라 최악의 경우 x-1씩 끝에서부터 0까지 쭉간다고 해도 10만개일 것 같네요

djm03178   3년 전

아마도 '정점마다 연결된 간선의 개수'를 의미하신 것 같은데, 이건 문제에 이름이 간선으로 안 쓰여있을 뿐 이미 -1, +1, *2라는 세 개의 간선이 정점마다 있다고 알려준 것입니다.

adxx   3년 전

헐 댓글쓰고 있었는데 답글 달아주셔서 늦게 봤습니다

답변 정말 감사합니다 시간계산은 확실히 착각 맞았습니다😭

adxx   3년 전

아하! 그럼 정점이 10만개뿐이고, 최대 간선이 30만개니까 최악의 경우 총 40만 정확하네요!!

정말 감사드립니다🙇🏻‍♂️🙇🏻‍♂️🙇🏻‍♂️🙇🏻‍♂️

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