μ£Όμš” 자료ꡬ쑰의 μ‹œκ°„λ³΅μž‘λ„

2025. 2. 7. 23:22Β·μ•Œκ³ λ¦¬μ¦˜

 

 

λ“€μ–΄κ°€λ©°

ν”„λ‘œκ·Έλž˜λ° μ΄ˆμ°½κΈ°μ—λŠ” μ‹œκ°„λ„ μ€‘μš”ν–ˆμ§€λ§Œ, 곡간도 맀우 μ€‘μš”ν–ˆμŠ΅λ‹ˆλ‹€. μ§€κΈˆμ²˜λŸΌ 고사양 λ©”λͺ¨λ¦¬μ™€ ν•˜λ“œλ””μŠ€ν¬λ₯Ό μ €λ ΄ν•œ 가격에 μ‚΄ 수 μ—†μ—ˆκΈ° λ•Œλ¬Έμ΄μ£ . κ·Έλ‹Ήμ‹œμ—λŠ” μš©λŸ‰μ΄ μΆ©λΆ„ν•œ λ©”λͺ¨λ¦¬λ„ μ—†μ—ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λ³€μˆ˜μ™€ ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜κ±°λ‚˜ μ‚¬μš©ν•  λ•Œλ„ λΆˆν•„μš”ν•œ 뢀뢄을 λ§Œλ“€μ§€ μ•Šμ•˜μœΌλ©° ν”„λ‘œκ·Έλž¨ μ‹€ν–‰νŒŒμΌμ˜ μš©λŸ‰λ„ μ€‘μš”ν–ˆμ£ . 컴퓨터가 λ°œμ „ν•˜λ©΄μ„œ μ§€κΈˆμ€ 곡간에 λŒ€ν•œ μ œμ•½μ€ 거의 없닀고해도 λ¬΄λ°©ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‹ˆ λ”μš± μ‹œκ°„μ— λŒ€ν•œ μ€‘μš”λ„κ°€ μ˜¬λΌκ°€κΈ°λ„ ν–ˆμ£ . μ‹œκ°„λ³΅μž‘λ„λŠ” λΉ…μ˜€(Big-O)λΌλŠ” ν‘œν˜„λ°©μ‹μ„ λŒ€λΆ€λΆ„ μ‚¬μš©ν•©λ‹ˆλ‹€. μ–΄λ–€ μ•Œκ³ λ¦¬μ¦˜μ΄ μ‹€ν–‰λ˜λŠ”λ° κ°€μž₯ μ΅œμ•…μ˜ 쑰건인 μƒνƒœλ‘œ μ–Όλ§ˆλ‚˜ 걸리냐λ₯Ό νŒλ‹¨ν•˜λŠ” μ§€ν‘œμž…λ‹ˆλ‹€. 주둜 μ‚¬μš©ν•˜λŠ” μžλ£Œκ΅¬μ‘°μ— λŒ€ν•œ μ‹œκ°„λ³΅μž‘λ„λ₯Ό μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

λ‹€μŒμ€ μ£Όμš” 자료ꡬ쑰의 연산별 μ‹œκ°„λ³΅μž‘λ„μž…λ‹ˆλ‹€.

 


 

λ°°μ—΄ (Array)

  평균 μ΅œμ•…
μ ‘κ·Ό (Access) O(1) O(1)
탐색 (Search) O(n) O(n)
μ‚½μž… (Insert) O(n) O(n)
μ‚­μ œ (Delete) O(n) O(n)
  • 배열은 인덱슀λ₯Ό μ΄μš©ν•œ 접근이 O(1) 둜 빠름.
  • 쀑간 μ‚½μž…/μ‚­μ œ μ‹œ μš”μ†Œλ“€μ„ 이동해야 ν•˜λ―€λ‘œ O(n).

 


 

μ—°κ²° 리슀트 (Linked List)

  평균 μ΅œμ•…
μ ‘κ·Ό (Access) O(n) O(n)
탐색 (Search) O(n) O(n)
μ‚½μž… (Insert) O(1) O(1)
μ‚­μ œ (Delete) O(1) O(1)
  • 단일 μ—°κ²° λ¦¬μŠ€νŠΈλŠ” νŠΉμ • λ…Έλ“œμ— λŒ€ν•œ 접근이 O(n) (순차 탐색 ν•„μš”).
  • κ·ΈλŸ¬λ‚˜ 처음(head)μ΄λ‚˜ 끝(tail)μ—μ„œ μ‚½μž…/μ‚­μ œλŠ” O(1).

 


 

ν•΄μ‹œ ν…Œμ΄λΈ” (Hash Table)

  평균 μ΅œμ•…
μ ‘κ·Ό (Access) - O(n)
탐색 (Search) O(1) O(n)
μ‚½μž… (Insert) O(1) O(n)
μ‚­μ œ (Delete) O(1) O(n)
  • ν•΄μ‹œ 좩돌이 λ°œμƒν•˜λ©΄ O(n) (λͺ¨λ“  ν•­λͺ©μ΄ 같은 버킷에 ν• λ‹Ήλœ 경우).
  • μ μ ˆν•œ ν•΄μ‹±κ³Ό 좩돌 ν•΄κ²° 기법(체이닝, 개방 μ£Όμ†Œλ²• λ“±)을 μ‚¬μš©ν•˜λ©΄ ν‰κ· μ μœΌλ‘œ O(1).

 

이진 탐색 트리 (Binary Search Tree, BST)

  평균 μ΅œμ•…
μ ‘κ·Ό (Access) O(log n) O(n)
탐색 (Search) O(log n) O(n)
μ‚½μž… (Insert) O(log n) O(n)
μ‚­μ œ (Delete) O(log n) O(n)
  • νŠΈλ¦¬κ°€ κ· ν˜•μ„ 이루면 O(log n).
  • ν•œμͺ½μœΌλ‘œ 치우친 경우(편ν–₯ 트리) O(n).

βœ… κ· ν˜• 이진 탐색 트리 (AVL, Red-Black Tree) → O(log n) 보μž₯.

 


 

νž™ (Heap)

  평균 μ΅œμ•…
μ ‘κ·Ό (Access) O(1) O(1)
μ‚½μž… (Insert) O(log n) O(log n)
μ‚­μ œ (Delete) O(log n) O(log n)
  • μ΅œμ†Œ/μ΅œλŒ€ νž™μ—μ„œ μ΅œμ†Ÿκ°’/μ΅œλŒ“κ°’ 접근은 O(1).
  • μ‚½μž…/μ‚­μ œ μ‹œ νž™ 속성을 μœ μ§€ν•΄μ•Ό ν•˜λ―€λ‘œ O(log n).


 

μŠ€νƒ (Stack)

  평균 μ΅œμ•…
μ ‘κ·Ό (Access) O(n) O(n)
탐색 (Search) O(n) O(n)
μ‚½μž… (Push) O(1) O(1)
μ‚­μ œ (Pop) O(1) O(1)
  • LIFO (Last In, First Out) ꡬ쑰.
  • μ‚½μž…/μ‚­μ œλŠ” topμ—μ„œλ§Œ μˆ˜ν–‰λ˜λ―€λ‘œ O(1).
  • μž„μ˜ μ ‘κ·Όμ΄λ‚˜ 탐색은 μ„ ν˜• 탐색이 ν•„μš”ν•˜λ―€λ‘œ O(n).


 

큐 (Queue)

  평균 μ΅œμ•…
μ ‘κ·Ό (Access) O(n) O(n)
탐색 (Search) O(n) O(n)
μ‚½μž… (Enqueue) O(1) O(1)
μ‚­μ œ (Dequeue) O(1) O(1)
  • FIFO (First In, First Out) ꡬ쑰.
  • μ‚½μž…(Enqueue)κ³Ό μ‚­μ œ(Dequeue)λŠ” O(1).
  • 탐색 및 μž„μ˜ 접근은 O(n).


 

μš°μ„ μˆœμœ„ 큐 (Priority Queue)

  평균 μ΅œμ•…
μ ‘κ·Ό (Access) O(1) O(1)
μ‚½μž… (Enqueue) O(log n) O(log n)
μ‚­μ œ (Dequeue) O(log n) O(log n)
  • μš°μ„ μˆœμœ„κ°€ 높은 μš”μ†Œκ°€ λ¨Όμ € λ‚˜κ°€λŠ” Heap 기반 큐.
  • νž™(Heap)으둜 κ΅¬ν˜„ν•˜λ©΄ μ‚½μž…/μ‚­μ œ O(log n).
  • μ΅œλŒ“κ°’/μ΅œμ†Ÿκ°’ μ‘°νšŒλŠ” O(1).


 

덱 (Deque, Double-Ended Queue)

  평균 μ΅œμ•…
μ ‘κ·Ό (Access) O(n) O(n)
탐색 (Search) O(n) O(n)
μ•žμͺ½ μ‚½μž… (Push front) O(1) O(1)
λ’€μͺ½ μ‚½μž… (Push back) O(1) O(1)
μ•žμͺ½ μ‚­μ œ (Pop front) O(1) O(1)
λ’€μͺ½ μ‚­μ œ (Pop back) O(1) O(1)
  • μ–‘μͺ½μ—μ„œ μ‚½μž…/μ‚­μ œ κ°€λŠ₯.
  • std::deque μ‚¬μš© μ‹œ O(1) 보μž₯.

 


 

κ·Έλž˜ν”„ (Graph)

  인접 ν–‰λ ¬ (Adjacency Matrix) 인접 리슀트 (Adjacency List)
μ €μž₯ 곡간 O(V²) O(V + E)
κ°„μ„  확인 (Check Edge) O(1) O(degree)
인접 λ…Έλ“œ 탐색 O(V) O(degree)
  • V: 정점 개수, E: κ°„μ„  개수.
  • 탐색 μ•Œκ³ λ¦¬μ¦˜:
    • BFS, DFS: O(V + E)
    • λ‹€μ΅μŠ€νŠΈλΌ: O((V + E) log V) (μš°μ„ μˆœμœ„ 큐 μ‚¬μš©)

 


 

정리

  • λΉ λ₯Έ μ ‘κ·Ό: λ°°μ—΄ O(1), ν•΄μ‹œ ν…Œμ΄λΈ” O(1)
  • λΉ λ₯Έ μ‚½μž…/μ‚­μ œ: μ—°κ²° 리슀트 O(1), ν•΄μ‹œ ν…Œμ΄λΈ” O(1)
  • μ •λ ¬λœ 데이터 탐색: 이진 탐색 트리 O(log n)
  • μ΅œμ†Ÿκ°’/μ΅œλŒ“κ°’ μœ μ§€: νž™ O(log n)
  • λ¬Έμžμ—΄ 검색: 트라이 O(m)
  • κ·Έλž˜ν”„ 탐색: DFS/BFS O(V + E)

 

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)

'μ•Œκ³ λ¦¬μ¦˜' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[κΈ°λ³Έ] ꡬ간합 μ‘μš©  (0) 2025.03.13
[κΈ°λ³Έ] μŠ€νƒ 자료ꡬ쑰 ν™œμš©  (0) 2025.03.10
[κΈ°λ³Έ] ν•©λ°°μ—΄κ³Ό ꡬ간 ν•© κ΅¬ν•˜κΈ°  (0) 2025.03.08
[κ·Έλž˜ν”„ 탐색] 깊이 μš°μ„  탐색(Depth First Search, DFS)  (0) 2025.02.12
ν•˜λ…Έμ΄μ˜ 탑 μ΄ν•΄ν•˜κΈ°  (2) 2022.02.18
'μ•Œκ³ λ¦¬μ¦˜' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [κΈ°λ³Έ] μŠ€νƒ 자료ꡬ쑰 ν™œμš©
  • [κΈ°λ³Έ] ν•©λ°°μ—΄κ³Ό ꡬ간 ν•© κ΅¬ν•˜κΈ°
  • [κ·Έλž˜ν”„ 탐색] 깊이 μš°μ„  탐색(Depth First Search, DFS)
  • ν•˜λ…Έμ΄μ˜ 탑 μ΄ν•΄ν•˜κΈ°
μ„œμ•„λž‘πŸ˜ƒ
μ„œμ•„λž‘πŸ˜ƒ
Just Do ItπŸ’ͺ
  • μ„œμ•„λž‘πŸ˜ƒ
    G-Stack
    μ„œμ•„λž‘πŸ˜ƒ
  • 전체
    였늘
    μ–΄μ œ
    • 전체보기 (144)
      • ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ (78)
        • C++ 기초 (28)
        • C++ μ‘μš© (18)
        • Python (18)
        • JavaScript & NodeJS (0)
        • Go (12)
        • React & NextJS (2)
        • Java (0)
      • AI (2)
      • 컴퓨터 ꡬ쑰 & 운영체제 (31)
      • μ•Œκ³ λ¦¬μ¦˜ (12)
      • λ°μ΄ν„°λ² μ΄μŠ€ (5)
      • λ„€νŠΈμ›Œν¬ (3)
      • λ””μžμΈνŒ¨ν„΄ (5)
      • μ„œλΉ„μŠ€ & 툴 (7)
      • νŠΈλ Œλ“œ&이슈 (1)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

  • 곡지사항

    • GμŠ€νƒμ˜ 기술 λΈ”λ‘œκ·Έ
  • 인기 κΈ€

  • νƒœκ·Έ

    Thread
    반볡문
    ν•˜λ“œλ””μŠ€ν¬
    pointer
    파이썬
    λ°°μ—΄
    쑰건문
    컴퓨터
    c
    λ””μžμΈνŒ¨ν„΄
    μ•Œκ³ λ¦¬μ¦˜
    cpu
    RAM
    fork
    μž¬κ·€
    νŒŒμΌμž…μΆœλ ₯
    λ©”λͺ¨λ¦¬
    가상메λͺ¨λ¦¬
    λ³€μˆ˜
    STD
    go
    μŠ€νƒ
    λ°μ΄ν„°λ² μ΄μŠ€
    init
    포인터
    component
    상속
    c++
    ν•¨μˆ˜
    νŒ¨ν‚€μ§€
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.6
μ„œμ•„λž‘πŸ˜ƒ
μ£Όμš” 자료ꡬ쑰의 μ‹œκ°„λ³΅μž‘λ„
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”