자료구조 이해하기(배열, 연결 리스트, 스택, 큐, 트리, 그래프)

일단해봐·2023년 7월 25일
0

코딩테스트

목록 보기
1/3

📌 자료구조란?

자료구조란 다수의 자로(data)를 효율적으로 담기 위한 구조다.

  • 자료구조는 다수의 자료(data)를 담기 위한 구조다.
  • 데이터의 수가 많아질수록 효율적인 자료구조가 필요하다.

📌 자료구조의 필요성

  • 데이터를 효과적으로 저장하고, 처리하는 방법에 대해 바르게 이해할 필요가 있다.
  • 자료구조를 제대로 이해하지 못하면 불필요하게 메모리와 계산을 낭비할 여지가 있다.
  • 대부분의 자료구조는 특정한 상황에 놓인 문제를 해결하는 데에 특화되어 있다.

📌 자료구조의 종류

단순 구조(Primitive Data Structure)

  • 프로그래밍에서 사용되는 기본 데이터 타입
  • JS의 원시타입에는 string, number, boolean, null, undefined 가 있다.

비단순 구조(Non-Primitive Data Structure)

  • 여러 데이터를 목적에 맞게 효과적으로 저장하는 자료구조
  • JS의 참조타입에는 Object, array, function이 있다.

선형 구조(Linear Data Structure)

하나의 데이터 뒤에 다른 데이터가 하나 존재하는 자료구조다.
데이터가 일렬로 연속적으로(순차적으로) 연결되어 있다.
저장된 자료의 전후 관계가 1:1이다.

✅ 배열(Array)

가장 일반적인 구조이며, 메모리 상에 같은 타입의 자료가 연속적으로 저장된다. 자료값을 나타내는 가장 작은 단위가 자료를 다루는 단위이다.

✅ 연결 리스트(Linked List)

연결 리스트는 동적 데이터 구조이다. 1) value 와 2) pointer가 한 쌍인 노드가 모여있는 자료구조형을 의미한다. 아래 푸른색 부분이 data를 저장하고 있고, 초록색 부분은 다음 오느들 가리키는 pointer 역할을 하는 address 부분이다.

✅ 스택(Stack)

스택은 마지막으로 삽입된 element가 가장 먼저 제거되는 방식(LIFO, Last In First Out)의 자료구조다.

✅ 큐(Queue)

큐는 흔히 먼저 온 사람이 먼저 들어가는 대기줄과 비교한다. 가장 먼저 삽입된 element가 가장 먼저 제거되는 방식(FIFO, First In First Out)의 자료구조다.

비선형 구조(Non-Linear Data Structure)

하나의 데이터 뒤에 다른 데이터가 여러 개 올 수 있는 자료구조다.
데이터가 일직선상으로 연결되어 있지 않아도 된다
데이터 항목 사이의 관계가 1:n이다.

✅ 트리(Tree)

트리는 부모 노드 밑에 여러 자식 노드가 연결되고, 자식 노드가 다시 부모 노드가 되어 각각의 자식 노드에게 연결되는 재귀적인 형식의 자료구조다.

✅ 그래프(Graph)

그래프는 각 노드들이 서로 연결되어 있는 자료구조다. 그래프는 노드(Node)와 간선(Edge)로 표현되며 이때 노드를 정점(Vertex)이라고도 한다. 그래프는 두 가지 방식으로 구현할 수 있다.

  • 인접 행렬(adjacency matrix): 2차원 배열을 사용하는 방식

  • 인접 리스트(adjacency list): 연결 리스트를 이용하는 방식

📌 자료구조와 알고리즘

  1. 효율적인 자료구조 설계를 위해 알고리즘 지식이 필요하다.
  2. 효율적인 알고리즘을 작성하기 위해서 문제 상황에 맞는 적절한 자료구조가 사용되어야 한다.
  3. 프로그램을 작성할 때 자료구조와 알고리즘 모두 고려해야 한다.

📌 자료구조를 적절히 활용하기

대부분의 자료구조는 특정한 상황에 놓인 문제를 해결하는 데에 특화되어 있기 때문에 적절한 상황에 적절한 자료구조를 선택하면 효율적인 프로그램을 작성할 수 있다.

profile
안녕하세요, 프론트엔드 개발자가 될 열정적인 사람입니다.

1개의 댓글

comment-user-thumbnail
2023년 7월 25일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기