18323번 - Photoshoot
배열의 범위를 초과해도 코드가 통과합니다.
ex )n = 1000 이고
b의 배열 순서가 1999 1997 1995 1993 1991 ... 3이면
a의 배열 순서는 999 1000 997 998 995 996 993 994 991 992 ....... 3 4 1 2 이 됩니다.
코드 25번째 줄의 반복문을 수행하면서 a[0] = 3이면 a[1] = 1996이 됩니다.
이때 a[2]는 if 조건문에 걸리지 않게 되어 chk[1996] = 1이 표시가 되는데 제가 설정한 chk배열의 크기(= 1005) 가 벗어나게 됩니다.
이렇게 범위가 벗어나도 런타임에러가 발생하지 않는데 정상인가요...???
놀랍게도 정상입니다. 배열 인덱스 초과가 발생한다고 무조건 런타임 에러가 발생하는것은 아니며, 틀렸습니다, 시간초과 등 다른 결과가 나올 수도 있습니다.
댓글을 작성하려면 로그인해야 합니다.
judygh_hong 3년 전
배열의 범위를 초과해도 코드가 통과합니다.
ex )n = 1000 이고
b의 배열 순서가 1999 1997 1995 1993 1991 ... 3이면
a의 배열 순서는 999 1000 997 998 995 996 993 994 991 992 ....... 3 4 1 2 이 됩니다.
코드 25번째 줄의 반복문을 수행하면서 a[0] = 3이면 a[1] = 1996이 됩니다.
이때 a[2]는 if 조건문에 걸리지 않게 되어 chk[1996] = 1이 표시가 되는데 제가 설정한 chk배열의 크기(= 1005) 가 벗어나게 됩니다.
이렇게 범위가 벗어나도 런타임에러가 발생하지 않는데 정상인가요...???