본문 바로가기
2024.10~/일일 학습 노트

[2024-11-17] Do it! 알고리즘 코딩테스트 with JAVA 강의 필기 노트(배열)

by HJfan 2024. 11. 17.

Title : -


인프런에서 무료로 제공하는 "하루코딩" 강사님의 "Do it! 알고리즘 코딩테스트 with JAVA"

강의를 수강하며 실시간으로 정리한 내용을 다루는 글입니다.

 

배열(Array)의 특징

- 배열은 메모리(RAM)에 연속적(물리적인 의미)으로 값을 저장하는 자료구조

출처 : https://velog.io/@kiduki555/%EB%B0%B0%EC%97%B4Array%EC%9D%98-%EB%AA%A8%EB%93%A0-%EA%B2%83

1. 인덱스(Index)를 사용하여 값에 바로 접근이 가능하다.

2. 구조가 간단하여 코딩 테스트에서 자주 사용한다.

3. 새로운 값의 추가나 기존 값의 삭제가 어렵다.
 3-1. 특정 인덱스에 있는 값을 제거하기 위해선 해당 인덱스의 값을 다음 인덱스에 저장하고, 다음 인덱스의
        값을 다다음 인덱스에 저장하는 For문을 사용 후 새로운 배열에 Copy 해야 한다. 추가 역시 역순의 과정을
        거쳐야 하기 때문에 값에 접근이 간단한만큼 변경이 귀찮은 편

4. 배열의 크기(Size)는 선언할 때 지정할 수 있고, 이후에는 변경이 불가능하다.

 

 

리스트(List)의 특징

- 리스트는 값과 포인터를 묶은 노드(Node)라는 것을 포인터로 연결한 자료구조이다.

출처 : https://masterpiece-programming.tistory.com/61

1. 인덱스가 없어서 값에 접근하기 위해서는 Head 포인터부터 순서대로 접근해야 한다.
    즉, 값에 접근하는 속도가 느리다.

2. 포인터로 연결되어 있으므로 데이터를 삽입하거나 삭제하는 연산 속도가 빠르다.
    삭제하고자 하는 노드만 삭제해 버린 후 해당 노드의 전 노드가 가리키는 주소를 해당 노드의
    다음 노드로 변경해 주면 끝.

3. 선언할 때 별도로 크기(Size)를 지정하지 않아도 된다.
    즉, 리스트는 크기가 정해져 있지 않으며, 크기가 변하기 쉬운 데이터를 다룰 때 적합하다.

4. 포인터를 저장할 공간이 필요하므로, 배열보다 구조가 복잡하다.

 

- 단, 자바 언어만 학습할 개발자 혹은 코딩 테스트를 준비하는 취준생이라면,
  리스트를 직접 구현할 경우는 없을 것이라고 생각한다. 본인은 알고리즘을 C++로 처음 접했고,
  Front, Rear 등의 포인터가 직접 노드를 추적하도록 구현했기에 위 강의를 참조하여 정리했을 뿐,
  이미 추상화되어 잘 구현된 ArrayList나 LinkedList...의 자료구조를 제공하는 자바 언어를 사용하는
  개발자들은 개념 정도만 알아두면 될 것이다.

 

 

 

 

 


단어 사전

[1] :

[2] :


Reference :