ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자료ꡬ쑰 정리
    자료ꡬ쑰 2021. 8. 9. 02:05
    λ°˜μ‘ν˜•

    κΈ°λ³Έ 자료ꡬ쑰 μ’…λ₯˜

    μ„ ν˜• 자료ꡬ쑰 (linaer)

    - λ°°μ—΄ (Array)

    - μ—°κ²°λ¦¬μŠ€νŠΈ (Linked List)

    - μŠ€νƒ (Stack)

    - 큐 (Queue)

     

    λΉ„μ„ ν˜• 자료ꡬ쑰 (non-linear)

    - 트리 (Tree)

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


    1. λ°°μ—΄

    1) μ •μ˜

    같은 μžλ£Œν˜•μ„ κ°–λŠ” μ—¬λŸ¬ 데이터λ₯Ό ν•˜λ‚˜μ˜ λ³€μˆ˜ μ΄λ¦„μœΌλ‘œ λͺ¨μ•„놓은 λ°μ΄ν„°μ˜ 집합체

     

    2) νŠΉμ§•

    - λ…Όλ¦¬μ μˆœμ„œμ™€ 물리적 μˆœμ„œκ°€ κ°™λ‹€.

    - 인덱슀λ₯Ό 톡해 μ§μ ‘μ μœΌλ‘œ μ›μ†Œμ— μ ‘κ·Όν•œλ‹€.

    - μ‚½μž…, μ‚­μ œ μ‹œ 자료의 이동에 λ”°λ₯Έ μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— μ‚½μž…/μ‚­μ œ 연산이 λΉˆλ²ˆν•˜κ²Œ μΌμ–΄λ‚˜λŠ” μ—°μ‚°μ—μ„œλŠ” λΆ€μ ν•©ν•˜λ‹€.

     

    2. μ—°κ²°λ¦¬μŠ€νŠΈ

    1) μ •μ˜

    λ…Έλ“œ (ν•˜λ‚˜ μ΄μƒμ˜ 데이터 ν•„λ“œμ™€ ν•˜λ‚˜ μ΄μƒμ˜ 링크 ν•„λ“œλ‘œ ꡬ성)λΌλŠ” μ €μž₯ꡬ쑰λ₯Ό μ΄μš©ν•΄μ„œ μ„ ν˜• 리슀트λ₯Ό ν‘œν˜„ν•˜λŠ” 방법

     

    2) νŠΉμ§•

    - λ…Όλ¦¬μ μˆœμ„œμ™€ λ¬Όλ¦¬μ μˆœμ„œκ°€ 같지 μ•Šλ‹€.

    - 링크 ν•„λ“œμ˜ 쑰정을 톡해 배열보닀 비ꡐ적 κ°„λ‹¨ν•˜κ²Œ μ‚½μž…/μ‚­μ œ 연산을 ν•  수 μžˆλ‹€.

    - μˆœμ°¨μ ‘κ·Όμ„ ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— κ²€μƒ‰μ‹œ λ°°μ—΄λ³΄λ‹€λŠ” 효율이 λ–¨μ–΄μ§€λŠ” νŽΈμ΄λ‹€.

     

    3) μ’…λ₯˜

    - 단일 μ—°κ²°λ¦¬μŠ€νŠΈ (Singly Linked List) : λ…Έλ“œκ°€ ν•œλ°©ν–₯으둜만 갈 수 있음, λ…Έλ“œμ˜ 끝이 있음

    - 이쀑 μ—°κ²°λ¦¬μŠ€νŠΈ (Doubly Linked List) : 각 λ…Έλ“œκ°€ 이전 λ…Έλ“œ, λ‹€μŒ λ…Έλ“œμ— λŒ€ν•΄μ„œ μ°Έμ‘°ν•˜λŠ” ν˜•νƒœμ˜ μ—°κ²° 리슀트

     

    - 단일 μ—°κ²° 리슀트 : λ…Έλ“œκ°€ ν•œλ°©ν–₯으둜만 갈 수 있음, λ…Έλ“œμ˜ 끝이 μ—†μ–΄ μ–‘ λ…Έλ“œμ˜ 끝이 처음으둜 μ΄μ–΄μ§ˆ 수 있음

    - 이쀑 μ—°κ²° 리슀트 : λ…Έλ“œκ°€ μ–‘λ°©ν–₯으둜 갈 수 있음, λ…Έλ“œμ˜ 끝이 μ—†μ–΄ μ–‘ λ…Έλ“œμ˜ 끝이 처음으둜 μ΄μ–΄μ§ˆ 수 있음

     


    3. μŠ€νƒ

    1) μ •μ˜ 

    ν•œμͺ½ λμ—μ„œλ§Œ λ°μ΄ν„°μ˜ μ‚½μž…κ³Ό μ‚­μ œκ°€ μˆ˜ν–‰λ˜λŠ” μ„ ν˜• 리슀트

     

    2) νŠΉμ§•

    - κ°€μž₯ 늦게 λ“€μ–΄κ°„ 데이터가 κ°€μž₯ λ¨Όμ € λ‚˜μ˜€λŠ” ν›„μž…μ„ μΆœ (LIFO) 의 ν˜•μ‹μ„ 가진닀.

    - 데이터λ₯Ό μ‚½μž…ν•˜λŠ” push μ—°μ‚°κ³Ό 데이터λ₯Ό 좜λ ₯ν•˜λŠ” pop 연산이 μžˆλ‹€.

    - TOPμ—μ„œλ§Œ λ°μ΄ν„°μ˜ μ‚½μž…κ³Ό μ‚­μ œκ°€ μˆ˜ν–‰λœλ‹€.

     

    4. 큐

    1) μ •μ˜

    ν•œμͺ½ λμ—μ„œλŠ” λ°μ΄ν„°μ˜ μ‚½μž…λ§Œ μˆ˜ν–‰λ˜κ³  λ‹€λ₯Έ ν•œμͺ½ λμ—μ„œλŠ” μ‚­μ œλ§Œ μˆ˜ν–‰λ˜λŠ” μ„ ν˜• 리슀트

     

    2) νŠΉμ§•

    - κ°€μž₯ λ¨Όμ € λ“€μ–΄κ°„ 데이터가 κ°€μž₯ λ¨Όμ € λ‚˜μ˜€λŠ” μ„ μž…μ„ μΆœ (FIFO) 의 ν˜•μ‹μ„ 가진닀.

    - κ°€μž₯ μ•žλΆ€λΆ„μ„ front / head라고 ν•˜λ©°, κ°€μž₯ 뒷뢀뢄을 rear / tail이라고 ν•œλ‹€.


    5-1. 트리

     

    좜처 : https://www.newline.co/books/javascript-algorithms/binary-search-tree-bst

    1) μ •μ˜

    λ…Έλ“œλΌλŠ” 정보 ν•­λͺ©μ΄ κ°„μ„ μœΌλ‘œ μ—°κ²°λ˜μ–΄ 계측적인 ꡬ쑰λ₯Ό ν‘œν˜„ν•˜λŠ” λΉ„μ„ ν˜• 자료ꡬ쑰

     

    2) μš©μ–΄

    - μ„œλΈŒ 트리 (subtree) : ν•˜λ‚˜μ˜ λ…Έλ“œμ™€ κ·Έ λ…Έλ“œλ“€μ˜ μžμ†λ“€λ‘œ 이루어진 트리

     

    - 루트 λ…Έλ“œ(root) : λΆ€λͺ¨κ°€ μ—†λŠ” λ…Έλ“œλ‘œ νŠΈλ¦¬λŠ” ν•˜λ‚˜μ˜ 루트 λ…Έλ“œλ§Œμ„ 가진닀.

    - λ…Έλ“œμ˜ 차수 (degree) : ν•˜μœ„ 트리 갯수/κ°„μ„ μˆ˜ (degree)둜, 각 λ…Έλ“œκ°€ μ§€λ‹Œ κ°€μ§€μ˜ 수λ₯Ό λ§ν•œλ‹€.

    - 리프 λ…Έλ“œ(leaf node), 단말 λ…Έλ“œ : μžμ‹μ΄ μ—†λŠ” λ…Έλ“œλ₯Ό λ§ν•œλ‹€.

    - λΉ„λ‹¨λ§λ…Έλ“œ : 적어도 ν•˜λ‚˜μ˜ μžμ‹μ„ κ°€μ§€λŠ” λ…Έλ“œλ₯Ό λ§ν•œλ‹€.

     

    - λΆ€λͺ¨ λ…Έλ“œ (parent) : 

    - μžμ‹ λ…Έλ“œ (child) :

    - ν˜•μ œ λ…Έλ“œ (sibling) : 같은 λΆ€λͺ¨λ₯Ό κ°€μ§€λŠ” λ…Έλ“œλ₯Ό λ§ν•œλ‹€.

    - 후손(μžμ†, descendent) :

    - 쑰상(μ„ μ‘°, ancestor) : 

    - 레벨 : 루트 λ…Έλ“œλ‘œλΆ€ν„°μ˜ 길이

    - 높이/깊이 (height, depth) : 루트 λ…Έλ“œμ—μ„œ κ°€μž₯ κΉŠμˆ™νžˆ μžˆλŠ” λ…Έλ“œμ˜ 깊이둜 'κ°€μž₯ λ§ˆμ§€λ§‰ 레벨 + 1'둜 ꡬ할 수 μžˆλ‹€. 

    - 차수(degree) : λ…Έλ“œκ°€ 가지고 μžˆλŠ” μžμ‹ λ…Έλ“œμ˜ 개수

    - 숲

     

    5-2. μ΄μ§„νŠΈλ¦¬

    1) μ •μ˜

    각 λ…Έλ“œμ˜ μ°¨μˆ˜κ°€ 2μ΄ν•˜(0,1,2)인 μˆœμ„œ 트리

     

    2) νŠΉμ§•

    - 레벨 iμ—μ„œμ˜ μ΅œλŒ€  λ…Έλ“œ 개수: 2i

    - 높이 h인 트리의 μ΅œλŒ€ λ…Έλ“œ 개수 : 2h - 1

    - n0=n2+1 (n0: 단일 λ…Έλ“œμ˜ 수, n2: μ°¨μˆ˜κ°€ 2인 λ…Έλ“œμ˜ 수)

     

    3) μ’…λ₯˜

    - 포화(perfect) μ΄μ§„νŠΈλ¦¬ : λͺ¨λ“  리프 λ…Έλ“œμ˜ 레벨이 λ™μΌν•˜κ³  λͺ¨λ“  레벨이 가득 μ±„μ›Œμ Έ μžˆλŠ” 이진 트리λ₯Ό λ§ν•œλ‹€.

    - μ™„μ „(complete) μ΄μ§„νŠΈλ¦¬ : λΆ€λͺ¨, μ™Όμͺ½ μžμ‹, 였λ₯Έμͺ½ μžμ‹ 순으둜 μ±„μ›Œμ§€λŠ” 트리λ₯Ό λ§ν•˜λ©°, λ§ˆμ§€λ§‰ λ ˆλ²¨μ„ μ œμ™Έν•˜κ³  λͺ¨λ“  λ…Έλ“œκ°€ 가득 μ°¨ μžˆμ–΄μ•Ό ν•œλ‹€. λ˜ν•œ, λ§ˆμ§€λ§‰ 레벨의 λ…Έλ“œλ„ 쀑간에 빈 κ³³ 없이 μ™Όμͺ½μœΌλ‘œ λͺ°λ € μžˆμ–΄μ•Ό ν•œλ‹€.

    - μ „μ΄μ§„νŠΈλ¦¬ (full) : λ…Έλ“œμ°¨μˆ˜κ°€ 0 μ΄κ±°λ‚˜ 2인 μ΄μ§„νŠΈλ¦¬λ₯Ό λ§ν•˜λ©° κ· ν˜• μ΄μ§„νŠΈλ¦¬ (balanced)라고도 ν•œλ‹€.

     

     

     

     

    6. κ·Έλž˜ν”„

    1) μ •μ˜

    G = (V, E)

    V : 정점(μ—°κ²°ν•΄μ•Ό ν•  λŒ€μƒ)의 집합

    E : κ°„μ„ (μ—°κ²°μ„ )의 집합 

     

    2) μ’…λ₯˜

    λ°©ν–₯μ„±μ˜ μœ„μΉ˜μ— 따라 무방ν–₯ κ·Έλž˜ν”„μ™€ λ°©ν–₯κ·Έλž˜ν”„λ‘œ κ΅¬λΆ„ν•œλ‹€.

     

    무방ν–₯ κ·Έλž˜ν”„ (undirected)

    (1,0) = (0,1)

    λ°©ν–₯이 μ—†κΈ° λ•Œλ¬Έμ— μ–΄λ””λ“  κ°™μ•„ μ΄λŸ°μ‹μœΌλ‘œ() ν‘œν˜„ν•œλ‹€.

     

    λ°©ν–₯κ·Έλž˜ν”„ (directed)

    <1,2> =/= <2,1>
    λ°©ν–₯이 있기 λ•Œλ¬Έμ— μ΄λ ‡κ²Œ<> ν‘œν˜„ν•˜λ©° 값이 λ§žμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ‘˜μ€ λ‹€λ₯΄λ‹€.

     

    λ˜ν•œ κ°€μ€‘μΉ˜κ°€ μžˆμ„ 경우 κ°€μ€‘κ·Έλž˜ν”„(weighted)라고 ν•œλ‹€.

     

    3) μš©μ–΄

    - 인접(adjacent)

    - λΆ€μˆ˜(incident)

    - λΆ€λΆ„ κ·Έλž˜ν”„ (subgraph)

    - 경둜(path)

    - 경둜의 길이(length)

    - 차수(degree)

       λ°©ν–₯ κ·Έλž˜ν”„ -> μ§„μž… 차수(in-degree), μ§„μΆœ μ§€μˆ˜(out-degree)

    - λ‹¨μˆœ 경둜(simple path)

    - 사이클(cycle)

    - 루프(loop)

    - μ—°κ²°(connected)

    λ°©ν–₯κ·Έλž˜ν”„ -> κ°•λ ₯ μ—°κ²°(strongly-connected), μ•½ν•˜κ²Œ μ—°κ²°(weakly-connected)

     

    4) κ·Έλž˜ν”„μ˜ κ΅¬ν˜„

     

    인접행렬 (adjacency matrix) : 이쀑배열을 μ‚¬μš©ν•΄μ„œ κ΅¬ν˜„

    λ§Œμ•½ κ°€μ€‘μΉ˜κ°€ μ—†λŠ” κ·Έλž˜ν”„μΌ 경우 선이 μžˆλƒ 없냐인 1,0으둜 κ΅¬μ„±λ˜μ–΄ ν‘œν˜„λ¨

    μΈμ ‘λ¦¬μŠ€νŠΈ (adjacency list) : linkedList μ‚¬μš©ν•΄μ„œ κ΅¬ν˜„

    λ°˜μ‘ν˜•

    λŒ“κΈ€

Designed by Tistory.