11478번 - 서로 다른 부분 문자열의 개수
최대 크기 또는 최대에 근접하는 크기의 테스트 케이스가 적어도 하나는 있는 것이 당연하며, 수행 시간은 전체 케이스 중 최댓값으로 표시됩니다. 채점 정보
$$\sum_{i=0}^{n-1} \sum_{j=1}^{n-i} j = \frac{1}{6}(n^3 + 3n^2 + 2n)$$
으로, n=1000에 대하여 총 연산량은 1.7억 정도이며 많은 언어에서 1초 이내로 커버됩니다.
답변 주신 모든 분들 감사합니다!! 수행시간은 최대값이였군요
게다가 2번째 반복문의 j가 leng-i까지인것을 생각 못했네요..
러프하게 첫번째 반복문 1000, 두번째 반복문 500, substr 500, insert(log500) 잡으면 10억은 안나오겠군요!
추가적인 궁금증이 있는데 여러 인터넷글들에서
어떤 글을 1초에 1억번의 연산을 할 수 있다고 하고 어떤 글은 1초에 3-5억번의 연산을 할 수 있다고 나와서 저는 1초에 1억번의 연산을 기준으로 잡고 문제를 풀고 있었는데 혹시 댓글 주신 분들은 1초에 몇번의 연산을 기준으로 하고 계실까요?
저는 '가벼운 연산' 기준 1초에 10억 정도를 기준으로 잡는데, 이 연산의 '무게'라는 것이 생각하시는 것과 굉장히 다를 수 있기 때문에 단순히 문장의 개수만으로 속도를 예측하는 것은 매우 부정확합니다.
댓글을 작성하려면 로그인해야 합니다.
ryukangin 1년 전 0
시간복잡도에 대해 궁금해서 글을 쓰게 되었습니다.
문제에서 문자열의 길이는 1000이하라고 되어있고 시간제한은 1초입니다.
제가 짠 코드에서 만약 길이가 1000인 문자가 들어오면 적어도 10억번은 실행될것같은데요.
그렇게 되면 1초만에 못끝내지 않나요? 왜 정답이 되었는 지 궁금합니다. 단순히 테스트 케이스에 길이가 1000인 문자가 없었던 것일까요...
일단 제출후 실행시간은 496ms가 나왔습니다.
이 제출란에 있는 시간도 궁금한 것이 있는데 여기 나와있는 실행시간은 각각의 테스트케이스 실행시간의 평균인가요?
질문정리)
1. 길이가 1000인 문자열이 들어오면 시간초과가 되야하는것이 아닌가?
2. 제출란에서 정답이었을 때 나오는 시간은 각 실행시간의 평균인지? (아니면 테스트 케이스중 제일 오래걸린시간?)