코딩테스트를 연습하다보면 마주치는 문제여서 궁금해서 개인적으로 찾아보게되었다.
예를들어 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의 값과 인덱스에 저장하는 값이 같기때문에 코드를 더 이해하기 쉬워지기 때문이다.
'Java' 카테고리의 다른 글
this 란 무엇일까? (0) | 2024.07.05 |
---|---|
링크드 리스트(Linked List) (0) | 2022.11.22 |
배열(Array), Arrays sort, toString (0) | 2022.08.21 |
String vs StringBuilder 속도차이 (0) | 2022.08.21 |
BufferedReader, String Tokenizer (0) | 2022.08.18 |