Java
배열의 크기는 왜 입력받은 [N+1] 크기로 지정하는것일까?
chbong
2024. 7. 17. 23:30
코딩테스트를 연습하다보면 마주치는 문제여서 궁금해서 개인적으로 찾아보게되었다.
예를들어 1 <= N <= 1000 의 N을 각 배열에 초기화 하려고 한다.
여기서 생각한게 배열의 크기가 1000이라고 생각하였으므로 배열의 크기를 1000이라고 생각하게 된다.
int[] arr = new int[N];
arr을 초기화할때
1. 배열의 크기를 입력받은 N으로 지정하는 경우
2. 배열의 크기를 입력받은 N+1으로 지정하는 경우 - new int[N+1]
3. 배열의 크기를 1001 이라고 명시적으로 표현하는경우 - new int[1000]
4. 배열의 크기를 1000 이라고 명시적으로 표현하는경우 - new int[1001]
이렇게 4가지 경우가 있다.
결과적으로 말하면 N개의 배열만 사용할거라면 1~4번중 어느것으로 초기화해도 문제되지 않는다.
그런데 왜 사람들은 2번이나 3번을 선호하는 것일까 ?
● 정답은 직관성
배열의 인덱스는 0부터 시작한다.
그렇기에 1~1000을 사용하고자 할때 각 1~1000의 -1한값을 인덱스에 넣어서 초기화 한 후 사용해야한다.
그러면 1000번째를 표현할땐 arr[999] 로 보이기때문에, 사람들은 N+1의 값을 넣고 1~1000의 값과 인덱스에 저장하는 값이 같기때문에 코드를 더 이해하기 쉬워지기 때문이다.