본문 바로가기

Java

배열의 크기는 왜 입력받은 [N+1] 크기로 지정하는것일까?

코딩테스트를 연습하다보면 마주치는 문제여서 궁금해서 개인적으로 찾아보게되었다.

 

 

예를들어  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