happy   3달 전

테케로는 다 되는데 오류를 못찾겟습니다.

f52985   3달 전

5 20

9 9 9 10 10

정답 : 2

출력 : 3


맨 바깥쪽 for문을 돌다가 한번이라도 if(sum>=s)문 안에 들어가서 j의 값이 갱신된다면, 그 때의 sum값에는 A[j]+A[j+1]+...+A[i-1]+A[i]가 저장됩니다.

하지만 다음에 for문을 돌다가 다시 if문 안에 들어가게 된다면, sum값에는 존재하지도 않는 A[0]부터 빼기 시작합니다.

이로 인해 답의 후보로 추정되는 구간인 j~i에 해당하는 계산된 sum값이 실제 sum값보다도 더 작게되고, 이로 인해 실제 정답보다 더 큰 값을 출력할 여지가 생기게 됩니다.


위의 예시에서는 A[3]+A[4]의 값은 20임에도 불구하고, 계산된 sum 값은 이보다 더 작은 값이 나와서 3~4가 가장 작은 구간임에도 불구하고 이를 출력하지 않는 것입니다.

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