카테고리 없음

자료구조/알고리즘 개념

쿨시크 2025. 10. 25. 23:56

스택은 접시 탑, 큐는 줄서기 — 코드 없이 이해하는 자료구조

개발 공부를 시작하면 대부분 “자료구조/알고리즘”이라는 단어를 일단 겁부터 먹고 만난다.

특히 비전공자는 “이걸 알아야 하는 건 알겠는데, 도대체 왜 중요한지”부터 잘 안 잡힌다.

복잡한 시간 복잡도나 수식보다, 먼저 머릿속에 들어올 “직관”이 필요하다.

 

 

왜 자료구조를 배워야 할까?

정답률보다 “반응 속도” 때문이다

 

 

같은 기능을 만들더라도 “어떻게 담고, 어떻게 찾느냐”에 따라

사용자 입장에서 느끼는 속도는 극단적으로 달라진다.

예를 들어 로그인을 한다고 해보자.

입력한 이메일로 “저장된 사용자 목록” 중에서 나를 찾는 과정이 필요하다.

  • 목록 전체를 맨 앞부터 끝까지 하나씩 비교한다면 → 시간이 오래 걸린다
  • “어디 있는지 바로 가리키는 구조”를 써서 곧장 접근한다면 → 바로 나온다

 

자료구조는 바로 이 “접근 방식”을 바꾸는 기술이다.

 

 

스택(Stack)-접시를 위에만 쌓고 위에서만 뺀다 (LIFO)

  • 집에서 설거지한 접시를 위에만 올린다
  • 쓸 때도 위에 있는 것부터 꺼낸다
    → 나중에 쌓은 것이 먼저 나온다 (Last In First Out)

프로그래밍에서는

‘함수가 실행되면 쌓이고, 끝나면 빠지는’ 동작 등에서 쓰인다.

 

 

큐(Queue)-카페 웨이팅 줄 (FIFO)

  • 먼저 온 사람이 먼저 들어간다
  • 새로 오는 사람은 맨 뒤에 선다
    → 먼저 들어온 것이 먼저 나간다 (First In First Out)

운영체제의 작업 스케줄링, 프린터 출력 순서 등

“공정한 순서”를 보장해야 할 때 사용된다.

 

 

 

 

해시(Hash)-책갈피를 꽂아두는 것처럼 바로 점프

 

사전에서 단어를 찾을 때

앞에서부터 하나씩 넘기는 방식은 O(n) 이다.

근데 책갈피가 꽂혀 있다면 → 바로 뛰어간다 = O(1)

회원 이메일로 사람을 찾을 때도 해시는 동일한 효과를 낸다.

“먼저 주소를 계산해두고, 그곳에서 바로 꺼내는 방식”이 해시의 핵심이다.

 

 

 

 

트리(Tree) — 

폴더 구조 그대로 생각하면 된다

  • 루트(최상위 폴더)
  • 자식 노드(하위 폴더들)
  • 내려가면서 원하는 걸 좁혀간다

검색엔진의 자동완성·탐색, 데이터베이스 인덱스 등

“계층적으로 좁혀가는 문제”에 매우 강하다.

 

 

 

 

그래프(Graph) — 

지하철 노선도 자체가 그래프의 실물

  • 역 = 노드
  • 노선 = 간선
  • 특정 역까지 가장 빠른 길(최단경로)을 찾는 알고리즘이 그래프 문제의 전형

유튜브 추천, SNS 친구 추천도

실제로는 모두 그래프 위에서 돌아가는 문제다.

 

 

 

 

정리-“코드보다 먼저 머릿속 그림이 정확해야 한다”

 

 

자료구조를 어려워하는 대부분의 이유는

“이걸 왜 쓰는지 모르는데 코드부터 보려고 해서”다.

  • 스택 = 위로 쌓고 위에서만 뺀다
  • 큐 = 먼저 온 사람 먼저 처리
  • 해시 = 책갈피처럼 즉시 접근
  • 트리 = 폴더처럼 내려가며 찾기
  • 그래프 = 연결된 관계 위에서 최적 경로 찾기

 

 

이 직관이 잡히면

그 다음에 나오는 시간 복잡도, 구현, 언어별 차이는 훨씬 빠르게 흡수된다.