Skip to content

자료구조와 알고리즘 (Data Structures & Algorithms)

프로그램은 데이터를 저장하고, 필요한 방식으로 처리하는 과정의 반복이다.

이때 데이터를 어떤 형태로 저장할지 결정하는 것이 자료구조(Data Structure)이고,
저장된 데이터를 어떤 순서와 방법으로 처리할지 결정하는 것이알고리즘(Algorithm)이다.

  • 자료구조(Data Structure) : 데이터를 저장하고 관리하는 방법
  • 알고리즘(Algorithm) : 데이터를 처리하여 원하는 결과를 얻는 절차

자료구조

자료구조는 데이터를 효율적으로 저장하고 관리하기 위한 구조를 의미한다.

JavaScript에서 자주 사용하는 자료구조는 다음과 같다.

  • 변수 (Variable)
  • 배열 (Array)
  • 객체 (Object)
  • 스택 (Stack)
  • 큐 (Queue)
  • 연결 리스트 (Linked List)
  • 트리 (Tree)
  • 그래프 (Graph)

변수

변수는 하나의 데이터를 저장하는 가장 기본적인 방법이다.


js
const score = 100;

console.log(score); // 100

하나의 값만 저장할 때는 변수를 사용하는 것이 간단하다.
하지만 여러 개의 데이터를 저장해야 한다면 변수만으로 관리하기 어려워진다.

js
const score1 = 80;
const score2 = 90;
const score3 = 100;

const average = (score1 + score2 + score3) / 3;

console.log(average);

학생이 3명일 때는 문제가 없지만, 학생이 10명, 100명으로 늘어난다면
변수도 계속 추가해야 하므로 코드가 길어지고 관리하기 어려워진다.


배열

배열은 여러 개의 데이터를 하나의 변수에 순서대로 저장하는 자료구조이다.


js
const scores = [80, 90, 100];

배열을 사용하면 관련된 데이터를 하나로 묶어서 관리할 수 있다.

js
const scores = [80, 90, 100];

let sum = 0;

for (let i = 0; i < scores.length; i++) {
  sum += scores[i];
}

const average = sum / scores.length;

console.log(average);

배열을 사용하면 데이터 개수가 늘어나더라도 같은 방식으로 처리할 수 있다.

js
const scores = [80, 90, 100, 70, 85, 95];

이처럼 자료구조는 데이터를 더 효율적으로 저장하고 관리할 수 있도록 도와준다.


알고리즘

알고리즘은 문제를 해결하기 위한 절차나 방법을 의미한다.
같은 데이터를 사용하더라도 어떤 알고리즘을 사용하느냐에 따라 코드의 흐름이나 성능이 달라질 수 있다.


순차 탐색은 배열의 앞에서부터 하나씩 확인하면서 원하는 값을 찾는 알고리즘이다.

js
const numbers = [10, 20, 30, 40, 50];
const target = 40;

for (let i = 0; i < numbers.length; i++) {
  if (numbers[i] === target) {
    console.log(`${target}을 찾았습니다.`);
    break;
  }
}

위 코드는 배열의 첫 번째 요소부터 차례대로 확인하다가 target과 같은 값을 찾으면 반복문을 종료한다.
순차 탐색은 구현이 단순하지만, 데이터가 많아질수록 확인해야 하는 횟수가 늘어날 수 있다.


최댓값

배열의 모든 요소를 비교하면서 가장 큰 값을 찾는 알고리즘이다.

js
const numbers = [10, 5, 30, 20, 50];

let max = numbers[0];

for (const num of numbers) {
  if (num > max) {
    max = num;
  }
}

console.log(max); // 50

처음에는 배열의 첫 번째 값을 최댓값으로 가정한다.

js
let max = numbers[0];

그다음 배열의 값을 하나씩 확인하면서 현재 최댓값보다 큰 값이 나오면 최댓값을 새로 갱신한다.

js
if (num > max) {
  max = num;
}

이 과정을 반복하면 배열에서 가장 큰 값을 찾을 수 있다.


자료구조와 알고리즘의 관계

자료구조와 알고리즘은 서로 밀접하게 연결되어 있다.

  • 자료구조는 데이터를 저장하는 방법을 제공한다.
  • 알고리즘은 저장된 데이터를 처리하는 방법을 제공한다.

예를 들어 배열이라는 자료구조가 있다면, 배열에 저장된 데이터를 이용해 다음과 같은 알고리즘을 만들 수 있다.

  • 평균 구하기
  • 최댓값 찾기
  • 정렬하기
  • 탐색하기

즉, 자료구조는 데이터를 담는 그릇이고,
알고리즘은 그 데이터를 활용하는 방법이다.

좋은 자료구조를 선택하면 데이터를 더 효율적으로 다룰 수 있고,
좋은 알고리즘을 사용하면 문제를 더 빠르고 정확하게 해결할 수 있다.