qkrehdwns032   1년 전

index = Arrays.asList(origin).indexOf(ptr[i]);

이부분에서 시간초과가 나는건가요??

출력은 잘 나오는데 풀이방식이 잘못된걸까요?

djm03178   1년 전

문제를 풀 때에는 단순히 답이 잘 나오는지만이 아니라 항상 시간이 얼마나 걸릴지를 고려해야 합니다. indexOf를 쓰면 라이브러리가 다 해주니 너무나 편리하죠. 하지만 편리함에는 댓가가 따르기 마련입니다. indexOf라는 건 굉장히 무거운 연산입니다. 리스트의 입장에서는 ptr[i]라는 게 리스트의 어디에 숨어있을지 모르니, 처음부터 하나씩 일일이 비교해가면서 일치하는 것을 찾는 수밖에 없습니다. 결국 평균적으로 리스트의 길이에 비례하는 시간이 걸립니다. 이 부분을 라이브러리 대신 직접 루프를 돌려서 찾는다고 생각하고 직접 구현해보시면, 그게 얼마나 비효율적인지 시간 복잡도도 계산해보실 수 있습니다.

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