인프런 커뮤니티 질문&답변

AA66님의 프로필 이미지
AA66

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-H

1-H 질문있습니다.

작성

·

125

0

http://boj.kr/f680e784e79b45839a545852be677db5

이렇게 하면 왜 시간 초과가 나는지 궁금합니다. 온도의 합을 계산하는데 시간이 너무 많이 걸려서 그러는 걸까요?

큰돌님이 풀어주신 누적합 사용하는 방법은 이해했습니다. 하지만 제가 원래 저렇게 풀었어서 저 방법은 왜 시간 초과가 나는지 궁금합니다!

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

시간 초과가 발생하는 이유는 이중 루프를 사용하여 연속된 k일의 합을 계산하기 때문입니다. 현재 구현은 O(n * k) 시간 복잡도를 가지며, n과 k가 최대 100,000일 때 매우 큰 시간복잡도 -> 시간초과 가 남. 이라고 보시면 됩니다. (10만 * 10만 = 100억)

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

AA66님의 경우, 시간 초과 문제에 대한 궁금증을 갖고 계시군요. 시간 초과가 발생하는 핵심 이유는 알고리즘의 시간 복잡도가 높아서 입니다. 즉, 데이터의 양에 비해 처리해야 할 연산이 너무 많을 때 발생합니다. 본질적으로, 온도의 합을 계산하는 과정에서 반복적인 덧셈 연산이 중첩되어 사용될 경우, 이는 시간 복잡도를 기하급수적으로 증가시킬 수 있습니다.

큰돌님의 교육 과정에서 비슷한 문제에 대한 설명을 찾을 수 있습니다. 이는 누적합(Prefix Sum)를 활용하는 방식으로, 큰 배열에 대해 여러 번의 합산 연산을 효율적으로 처리할 수 있는 기법입니다. 누적합을 사용하면 단 한 번의 반복으로 모든 구간의 합을 O(1)의 시간에 구할 수 있게 되어 시간 초과 문제를 해결할 수 있습니다.

이러한 문제를 해결한 기존 답변에서는 아래와 같은 포인트들을 확인할 수 있습니다:

  • 시간 초과가 발생하는 기본적인 이유그것을 해결하기 위한 전략에 대한 체계적인 설명.
  • 누적합(Prefix Sum) 활용 방법의 상세한 설명과 구현 예시.

특히, 질문자님이 겪고 계신 시간 초과 문제와 유사한 상황을 다룬 질문에 대한 지식공유자의 답변을 아래에서 확인하실 수 있습니다:

  • ”[1-H]시간 초과 관련해서 질문드립니다”에서는 벡터의 사용과 이중 for문이 시간 초과의 원인으로 지목되며, 시간 복잡도를 줄일 수 있는 누적합 기법에 대해 설명하고 있습니다. 이 답변은 시간 복잡도를 계산하는 방법과 누적합(Prefix Sum)을 사용하여 시간 초과 문제를 해결하는 방안을 제공합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

AA66님의 프로필 이미지
AA66

작성한 질문수

질문하기