1912번 - 연속합
코드를 짜봤는데 답은 잘 나옵니다..
근데 시간초과에서 계속 걸리네요
반복문을 한번만 써야하나요. 아니면 배열을 하나 써야하나요
시간초과를 어떻게 해결해야할지 모르곘어요ㅠㅠ
이 코드는 이중포문때문에 시간복잡도가 O(n^2)가 되는데, 이 문제에서 최대 n값은 10^5이기 때문에 시간초과가 나옵니다.
DP를 사용해서 푸시면 됩니다.
앗 포문 하나로도 되나보군요..
나름 DP 사용한다고 했는데... 이중포문으로밖에 생각을 못했네요
저 코드도 나름 DP 맞긴 맞죠..?
전에 계산한걸 이용했으니
어떤 구간을 계산한 후, 그 값을 저장해서 재사용하면 포문 하나로 풀 수 있습니다!
이 코드에서는 전 단계에서 계산한 값(arr[i]를 포함하는 최대 연속합)을 재사용하지 못하고 있어 DP가 아닙니다.
-1 1 2라는 수열이 있을때
1에 -1을 더하는것 보다 더하지 않는게 더 크므로 그냥 1을 유지하고
2는 반대로 2를 유지하는것 보다 1을 더하는 것이 더 크기 때문에 1을 더해야 합니다.
댓글을 작성하려면 로그인해야 합니다.
lsmmay322 3년 전
코드를 짜봤는데 답은 잘 나옵니다..
근데 시간초과에서 계속 걸리네요
반복문을 한번만 써야하나요. 아니면 배열을 하나 써야하나요
시간초과를 어떻게 해결해야할지 모르곘어요ㅠㅠ