배열(Array)
배열은 기차와 같은 자료구조이다. 데이터를 연속적으로 저장을 하면서 많은 데이터들을 다룰 때사용하는 자료구조로 제일 많이 사용하는 자료구조라고 할 수 있다.
배열을 공부하게 되면 먼저 사이즈(size)와 인덱스(index)에 대해서 알아야 한다. 사이즈 라는 것은 배열의 크기를 선언할 때 사용하는 용어이다. 그리고 인덱스는 생성된 배열에서 원하는 값이 존재하는 위치라고 보면 되는데, 안타깝게도 이 둘의 값은 같지가 않다라는게 함정이다.
사이즈와 인덱스의 값
사이즈가 5인 배열을 만들었다면 인덱스는 0~4까지 존재한다. 즉 인덱스는 사이즈 - 1 까지의 값을 가진다.
만약 사용자가 사이즈가 5인 배열을 만들게 된다면 인덱스는 0부터 시작해서 4에서 끝나는 배열을 만들어 준다. 그렇기 때문에 인덱스 5번의 값은 존재하지 않는다. 이러한 이유로 outOfIndex 라는 오류를 자주 보게 된다.
하지만 이러한 특성만 잘 알고 접근을 한다면 원하는 데이터가 어디에 있는지 알고 있다면 바로 그 데이터를 찾아서 쓸 수 있다는게 장점이다. 그렇기 때문에 배열은 자주 변하지 않는 자료에 대해서는 유리한 자료구조이다.
반대로 생각하면 자주 변하게 되는 데이터에 대해서는 매우 비효율적인 자료구조이다. 왜냐하면 하나를 추가 및 삭제를 하게 되면 자동으로 사이즈가 변경이 되지 않기 때문이다. 결론은 처음 만든 크기 그대로를 사용하기 때문에 입력 된 인덱스 넘버 뒤에 있는 데이터들은 모두 다시 재입력을 하면서 새로운 배열을 만들어야 한다.
자바에서 배열 선언 및 초기화
자바에서 배열을 선언 할 때는 사이즈만 선언하는 방식과 초기화 해줄 값을 같이 넣어주는 방식 2가지가 있다. 필요에 따라 사용을 하면된다.
int[] arr = new int[5]; // 사이즈가 5인 배열을 생성
int[] arr = {1,2,3,4,5}; // 사이즈가 5인 배열에 1,2,3,4,5 값을 초기화
시간복잡도
접근: O(1)
삽입, 삭제 : O(n)
검색 : O(n)
'Zero-Base > 자료구조-알고리즘' 카테고리의 다른 글
연결리스트(LinkedList) (0) | 2023.03.17 |
---|---|
해시맵(HashMap, HashTable) (0) | 2023.03.16 |
큐(Queue) 관련 문제 (0) | 2023.03.14 |
큐(Queue) (0) | 2023.03.14 |
연습 문제 풀이-2(2) (0) | 2023.03.14 |