qlsdud0604   2년 전

투포인터로 알고리즘을 짜서 성공을 했습니다. 근데 같은 방식의 알고리즘인데 조건문의 순서를 바꾸니 인덱스 범위 오류가 나는데 대체 왜 그런건가요?

47~55번 라인의 코드를 다음과 같이 바꾸었는데 오류가 납니다.

if (sum < S) {
     sum += arr[right];
     right++;
} else if (S <= sum) {
     sum -= arr[left];
     result = Math.min(result, right - left);
     left++;
} else if (right == N)
     break;

dldyddlwl   2년 전

.

sb123s   2년 전

만약 if(sum < S) 조건문에 걸려서 right++을 수행했으나

right가 범위를 벗어나게 된다면 잘못된 index를 접근하게 됩니다.

1 2 3 <- 만 주어진 문제에서 합이 10이상을 찾는다면

right가 3을 가리키고 있음에도 합이 최대 6이므로 right가 증가하게 되고 잘못된 index를 접근하게 됩니다.

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