Title : -
인프런에서 무료로 제공하는 "하루코딩" 강사님의 "Do it! 알고리즘 코딩테스트 with JAVA"
강의를 수강하며 실시간으로 정리한 내용을 다루는 글입니다.
배열(Array)의 특징
- 배열은 메모리(RAM)에 연속적(물리적인 의미)으로 값을 저장하는 자료구조
1. 인덱스(Index)를 사용하여 값에 바로 접근이 가능하다.
2. 구조가 간단하여 코딩 테스트에서 자주 사용한다.
3. 새로운 값의 추가나 기존 값의 삭제가 어렵다.
3-1. 특정 인덱스에 있는 값을 제거하기 위해선 해당 인덱스의 값을 다음 인덱스에 저장하고, 다음 인덱스의
값을 다다음 인덱스에 저장하는 For문을 사용 후 새로운 배열에 Copy 해야 한다. 추가 역시 역순의 과정을
거쳐야 하기 때문에 값에 접근이 간단한만큼 변경이 귀찮은 편
4. 배열의 크기(Size)는 선언할 때 지정할 수 있고, 이후에는 변경이 불가능하다.
리스트(List)의 특징
- 리스트는 값과 포인터를 묶은 노드(Node)라는 것을 포인터로 연결한 자료구조이다.
1. 인덱스가 없어서 값에 접근하기 위해서는 Head 포인터부터 순서대로 접근해야 한다.
즉, 값에 접근하는 속도가 느리다.
2. 포인터로 연결되어 있으므로 데이터를 삽입하거나 삭제하는 연산 속도가 빠르다.
삭제하고자 하는 노드만 삭제해 버린 후 해당 노드의 전 노드가 가리키는 주소를 해당 노드의
다음 노드로 변경해 주면 끝.
3. 선언할 때 별도로 크기(Size)를 지정하지 않아도 된다.
즉, 리스트는 크기가 정해져 있지 않으며, 크기가 변하기 쉬운 데이터를 다룰 때 적합하다.
4. 포인터를 저장할 공간이 필요하므로, 배열보다 구조가 복잡하다.
- 단, 자바 언어만 학습할 개발자 혹은 코딩 테스트를 준비하는 취준생이라면,
리스트를 직접 구현할 경우는 없을 것이라고 생각한다. 본인은 알고리즘을 C++로 처음 접했고,
Front, Rear 등의 포인터가 직접 노드를 추적하도록 구현했기에 위 강의를 참조하여 정리했을 뿐,
이미 추상화되어 잘 구현된 ArrayList나 LinkedList...의 자료구조를 제공하는 자바 언어를 사용하는
개발자들은 개념 정도만 알아두면 될 것이다.
단어 사전
[1] :
[2] :
Reference :
'2024.10~ > 일일 학습 노트' 카테고리의 다른 글
[2024-11-24] Kotlin 문법 입문 스타트 (0) | 2024.11.24 |
---|---|
[2024-11-19] 코테 기초(입력된 문자열을 정수로 변환 후 각 자리의 합 반환하기) (1) | 2024.11.19 |
[2024-11-17] Fragment 기초 개념 다지기(with 깡쌤의 안드로이드 프로그래밍 with 자바) (0) | 2024.11.17 |
[2024-11-04] 자바 입력 처리 방식 비교(2) (0) | 2024.11.05 |
[2024-11-04] 자바 입력 처리 방식 비교(1) (0) | 2024.11.04 |