sjr0606   1년 전

해당 코드에 대해서 indexerror가 나는 이유가 궁금합니다.

케이스 통과 후 대표적인 반례도 통과하게 되는데 indexerror가 나는 이유가 궁금합니다.

siyamaki   1년 전

인덱스 에러 케이스입니다

배열에서 직접 빼버리면 work의 length도 같이 줄어서 검색하는 index도 같이 움직여줘야 합니다

1000 900 800 ... 100 순서로 정렬이 되는데

맨 처음에 1000을 빼고 n이랑 비교, 현재 in에서 가리키는 인덱스는 0번째입니다

1000이 n보다 크니 work에서 리무브, work의 0번째 인덱스는 900

다음 for문이 돌면서 index가 1로 증가. 현재 work의 1번째 인덱스는 800

이런 식으로 진행되면서 1000, 800, 600, 400, 200인 date만 빠지게 됩니다

그래서 17번째에 work에서 900, 700, 500, 300, 100이 loop가 돌면서 day[date]에 접근을 하게 되며

day의 크기는 N + 1이라 IndexOutOfBound가 발생하게 됩니다.

해당 부분은 아래 케이스를 13번째줄에서 직접 디버깅 해 보시면 됩니다

sjr0606   1년 전

아주 감사합니다!! 덕분에 좋은 정보 알아갑니다:)

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