luckyquit   4년 전

어떤 분이 말씀하시기로는 1억번의 연산이 1초가 걸린다고 합니다.

만약 TC를 고려하지 않아도 될 때(즉, 딱히 명시가 되어있지 않을 때), 1<=N<=100000 이고 실행시간제한은 1~3초일 때

이 문제는 O(N)으로 풀어야 한다고 합니다.

이게 왜 N번인지 잘 이해가 안갑니다. 구체적으로 설명해주실분 있으신가요?

djm03178   4년 전

N^2은 너무 크고 (100억), 이 사이에 있을 만한 거라면 NlogN, NsqrtN, Nlog^2N 정도가 있겠지만, N이나 NlogN까지는 고려할 수 있지만 그 이상은 알고리즘을 처음 하는 입장에서는 거의 볼 일이 없기 때문에 굳이 고려할 필요가 없습니다.

nahwasa   4년 전

앗.. 딱 O(N)은 아니어용 ㅠ

입력이 10만개정도였을때 O(N^2) 이상으로 시간 걸리는 시간복잡도로는 안된다는 의미였습니다!

djm님 말씀대로 저런 시간복잡도들도 있어요.

뭐 예를들어서 N개 각각에 대해 직접 순회하며 찾으면 O(N^2)이고 (2중반복문으로 그냥 찾는다면)

만약 해당 데이터가 정렬된 데이터임을 알았다면, 각각에 대해(N) 이분탐색(logN)을 하면 O(NlogN)이고 그건 통과가 되겠죠.

이전 글에 O(N)이라 쓴건 해당 문제가 그걸로 가능했기 때문입니닭

nahwasa   4년 전

시간복잡도로 구글링해서 한번 읽어보심 좋을듯합니다!

문제 풀기전에 대강 생각한게 되겠다 안되겠다 각을 잡을 수 있어서 좋더라구요.

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