1167번 - 트리의 지름
#1 코드는 정답
#2 코드는 시간초과를 받았습니다.
#2 코드는 임의로 벡터 두개로 함수에 넘기면서 정답 받고 수정하려고 짠 코드이긴 한데
매개변수로 벡터를 넘기는 것과 #1 코드처럼 전역으로 bool array에 경로를 체크하는 것이 시간 초과의 당락을 결정 할 정도로 큰 차이의 시간차이를 발생시키나요?
이유가 궁금합니다.
두번째 코드의 DFS 함수의 vector<int> P 부분을 vector<int> &P 로 바꾸는 시간내에 돌아갑니다.
아마도 함수가 실행 될 때마다 P를 복사하기 때문일거에요 (dfs 1번 할때마다 N+1 크기의 vector 생성)
&P로 하면서 복사하지 않고 기존의 값을 사용한다 라고 생각하면 좋을것 같아요
궁금하시면 직접 찾아보시는게 좋을것 같아요.. 저는 지식이 얕아서 자세히는 대답 못해드리네요 ㅜㅜ
댓글보고 이곳저곳 찾아보고 실험해보니 말씀하신 것이 맞는 것 같아요 !
그래서 함수 매개변수를 vector <int> &P 로 포인터를 넘겨주는 방식으로 바꾸면 시간초과가 해결되네요
감사합니다
댓글을 작성하려면 로그인해야 합니다.
jaeseb96 4년 전
#1 코드는 정답
#2 코드는 시간초과를 받았습니다.
#2 코드는 임의로 벡터 두개로 함수에 넘기면서 정답 받고 수정하려고 짠 코드이긴 한데
매개변수로 벡터를 넘기는 것과 #1 코드처럼 전역으로 bool array에 경로를 체크하는 것이 시간 초과의 당락을 결정 할 정도로 큰 차이의 시간차이를 발생시키나요?
이유가 궁금합니다.