Skip to content

Commit 70f2391

Browse files
committed
change dir structure / initial commit
1 parent f4f5b1e commit 70f2391

File tree

118 files changed

+3582
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+3582
-0
lines changed
Lines changed: 261 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,261 @@
1+
# Array and LinkedList
2+
3+
> Array
4+
5+
> Array vs List
6+
7+
> LinkedList
8+
9+
## Array
10+
11+
์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ
12+
13+
- ์ฃผ๋กœ ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ
14+
- ์‚ฝ์ž… ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ (์ƒˆ๋กœ ์‚ฝ์ž…๋˜๋Š” ์š”์†Œ๋Š” ๋ฐฐ์—ด์˜ ๋งจ ๋์— ์œ„์น˜)
15+
- ์ด๋ฏธ ์ƒ์„ฑ๋œ ๊ฒƒ๋„ ์ˆ˜์ • ๊ฐ€๋Šฅ(mutable)
16+
- ๋™์ผํ•œ ๊ฐ’ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฝ์ž… ๊ฐ€๋Šฅ
17+
- ๋‹ค์ค‘์ฐจ์› ๋ฐฐ์—ด(Multi-dimentional Array): ๋ฐฐ์—ด ์•ˆ์— ๋ฐฐ์—ด์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์Œ
18+
- **๊ณ ์ •๋œ ํฌ๊ธฐ**๋ฅผ ๊ฐ–๋Š” **๊ฐ™์€ ์ž๋ฃŒํ˜•**์˜ ์›์†Œ๋“ค์ด **์—ฐ์†์ ์ธ** ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ
19+
20+
> `์ˆœ์ฐจ์  ์ž๋ฃŒ๊ตฌ์กฐ(Sequential Data Structure)`: ๋ฐ์ดํ„ฐ๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ตฌ์กฐ
21+
22+
## Array ํŠน์ง•
23+
24+
![Untitled](img/ArrayVSLinkedList/array-1.png)
25+
26+
1. `์ธ๋ฑ์Šค(index)`๋กœ ํ•ด๋‹น ์›์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
27+
2. ์ถ”๊ฐ€์ ์œผ๋กœ ์†Œ๋ชจ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์–‘(overhead)์ด ๊ฑฐ์˜ ์—†๋‹ค.
28+
3. `Cache hit rate`๊ฐ€ ๋†’๋‹ค.
29+
4. ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์—ฐ์†ํ•œ ๊ตฌ๊ฐ„์„ ํ• ๋‹นํ•ด์•ผํ•ด์„œ ํ• ๋‹น์— ์ œ์•ฝ์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
30+
31+
## Array ์—ฐ์‚ฐ๋“ค๊ณผ ์‹œ๊ฐ„ ๋ณต์žก๋„
32+
33+
- ์ž„์˜์˜ ์œ„์น˜์— ์žˆ๋Š” ์›์†Œ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ์—ฐ์‚ฐ: `O(1)`
34+
- ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ๋์— ์›์†Œ ์ถ”๊ฐ€: `O(1)`
35+
- ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ๋ ์›์†Œ ์‚ญ์ œ: `O(1)`
36+
- ์ž„์˜์˜ ์œ„์น˜์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ : `O(n)`
37+
- ์ž„์˜์˜ ์œ„์น˜์— ์žˆ๋Š” ์›์†Œ ์ œ๊ฑฐ: `O(n)`
38+
39+
## Array ์žฅ์ 
40+
41+
- ๋žœ๋ค ์•ก์„ธ์Šค๊ฐ€ ๋น ๋ฅด๋‹ค.
42+
- `index`๋ฅผ ํ†ตํ•ด ์›์†Œ์— `O(1)` ์‹œ๊ฐ„๋ณต์žก๋„๋งŒ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
43+
44+
## Array ๋‹จ์ 
45+
46+
![Untitled](img/ArrayVSLinkedList/array-2.png)
47+
48+
- Array์˜ ์ค‘๊ฐ„ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•œ ๊ฒฝ์šฐ, ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ ์š”์†Œ ์ˆ˜ ๋งŒํผ `shift`ํ•ด์ค˜์•ผ ํ•˜๋Š” ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๊ณ  ์ด ๊ฒฝ์šฐ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” `O(n)`์ด ๋œ๋‹ค. (์‚ฝ์ž…์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)
49+
- ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์›์†Œ๋“ค์ด ์กด์žฌํ•˜๋ฏ€๋กœ ์ฒ˜์Œ ๋ฐฐ์—ด์„ ์„ ์–ธํ•œ ํฌ๊ธฐ๋งŒํผ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
50+
51+
### Dynamic Array ๋ฌธ์ œ
52+
53+
- ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•  ๋•Œ `Resizing ๋ฌธ์ œ`(๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋‹ค์‹œ ์กฐ์ •ํ•˜๋Š” ๋ฌธ์ œ)๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
54+
55+
๋ฐฐ์—ด์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฑ„์šฐ๋ฉฐ, ์ฒ˜์Œ ์ƒ์„ฑ๋  ๋•Œ ์–ด๋А ์ •๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ํ• ๋‹น(pre-allocation)ํ•œ๋‹ค.
56+
๋ฉ”๋ชจ๋ฆฌ๋ฅผ pre-allocationํ•˜๋ฉด์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜๋Š” ์š”์†Œ๋“ค๋„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋  ์ˆ˜ ์žˆ๋‹ค.
57+
ํ•˜์ง€๋งŒ ์ฒ˜์Œ ํ• ๋‹นํ•œ ๊ฒƒ๋ณด๋‹ค ์š”์†Œ๊ฐ€ ๋” ๋งŽ์•„์ง„๋‹ค๋ฉด `resizing`์ด ํ•„์š”ํ•˜๋‹ค.
58+
Array ํŠน์„ฑ์ƒ, ์ถ”๊ฐ€์ ์œผ๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๋˜ํ•œ ์ˆœ์ฐจ์ ์œผ๋กœ ๋“ค์–ด๊ฐ€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
59+
60+
![Untitled](img/ArrayVSLinkedList/array-3.png)
61+
62+
- ๊ธฐ์กด์˜ ๋ฐฐ์—ด์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ 
63+
- ์ƒˆ๋กœ์šด ๊ธธ์ด๋กœ ์ง€์ •๋œ ๋ฐฐ์—ด์„ ๋”ฐ๋กœ ํ• ๋‹น ํ›„
64+
- ๋ฐ์ดํ„ฐ์˜ ๋ณต์‚ฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ 
65+
- ๊ธฐ์กด์˜ ๋ฐฐ์—ด์„ ์‚ญ์ œ
66+
67+
## Array์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ๊ฒฝ์šฐ
68+
69+
- ์ˆœ์ฐจ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ(ex. ๋Œ€ํšŒ ๊ฒฐ๊ณผ)
70+
- ๋‹ค์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ (ex. ๋ฐฐ์—ด ์•ˆ์˜ ๋ฐฐ์—ด์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ)
71+
- ๋ฐ์ดํ„ฐ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž์ฃผ ๋ฐ”๋€Œ์ง€ ์•Š์„ ๋•Œ
72+
- ์š”์†Œ๊ฐ€ ์ž์ฃผ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€๋˜์ง€ ์•Š์„ ๋•Œ
73+
- ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ž‘์—…์ด ๋งŽ์„ ๋•Œ
74+
75+
## ๋ฐฐ์—ด(Array) vs ๋ฆฌ์ŠคํŠธ(List)
76+
77+
### ๋ฆฌ์ŠคํŠธ(list)
78+
79+
**์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ชจ์ž„**์ด๋‹ค. ๋‹ค๋ฅธ ๋ง๋กœ๋Š” ์‹œํ€€์Šค(sequence)๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.
80+
81+
- ์ˆœ์ฐจ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— `spacial locality` ๋ณด์žฅ์ด ๋˜์ง€ ์•Š์•„ `cache hit`๊ฐ€ ์–ด๋ ต๋‹ค.
82+
- ๋ฆฌ์ŠคํŠธ์—์„œ ์ธ๋ฑ์Šค๋Š” ๋ช‡ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์ธ๊ฐ€ ์ •๋„์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค. (๋ฐฐ์—ด์—์„œ์˜ ์ธ๋ฑ์Šค๋Š” ๊ฐ’์— ๋Œ€ํ•œ ์œ ์ผ๋ฌด์ดํ•œ ์‹๋ณ„์ž)
83+
84+
> spacial locality: ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์ ‘๊ทผํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ์ด๋ฏธ ์ ‘๊ทผ์ด ์ด๋ฃจ์–ด์ง„ ์˜์—ญ์˜ ๊ทผ์ฒ˜์ผ ํ™•๋ฅ ์ด ๋†’๋‹ค๋Š” ํ”„๋กœ๊ทธ๋žจ ์„ฑ๊ฒฉ ํ‘œํ˜„
85+
86+
### ์–ธ์–ด๋ณ„ list ์ง€์›
87+
88+
- ์ตœ๊ทผ ์–ธ์–ด๋“ค์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณต
89+
90+
**C**
91+
92+
- ๋ฆฌ์ŠคํŠธ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  ๋ฐฐ์—ด์„ ์ง€์›ํ•œ๋‹ค.
93+
- ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ง์ ‘ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
94+
95+
**JavaScript**
96+
97+
- ๋ฐฐ์—ด์— ๋ฆฌ์ŠคํŠธ์˜ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.
98+
99+
**Python**
100+
101+
- ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๋ฐฐ์—ด์€ ์ œ๊ณตํ•˜์ง€์•Š๋Š”๋‹ค.
102+
- ํŒŒ์ด์ฌ์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ฐฐ์—ด์ด๋‹ค.
103+
- ํŒŒ์ด์ฌ์˜ ๋ฆฌ์ŠคํŠธ๋Š” ํฌ๊ธฐ๊ฐ€ ๊ฐ€๋ณ€์ ์ด๊ณ , ์–ด๋–ค ์›์†Œ ํƒ€์ž…์ด๋˜ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค. ๋Œ€์‹  C์˜ ๋ฐฐ์—ด๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ๋งŽ์ด ํ•„์š”๋กœ ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
104+
105+
**Java**
106+
107+
- ๋ฐฐ์—ด๊ณผ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๊ณ , ๋‘ ๊ฐ€์ง€๊ฐ€ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค.
108+
- ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ฐฐ์—ด๊ณผ ๋ฆฌ์ŠคํŠธ ์ค‘ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.
109+
- ํฌ๊ฒŒ 2๊ฐ€์ง€ ํ˜•ํƒœ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ง€์›ํ•œ๋‹ค.
110+
- `LinkedList`
111+
- `ArrayList`
112+
113+
## Java - ArrayList/LinkedList
114+
115+
- ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๋นˆ๋ฒˆํ•˜๋‹ค๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜๋Š” `ArrayList`๊ฐ€ ๋” ๋น ๋ฅด๋‹ค.
116+
- ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€/์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•˜๋‹ค๋ฉด `LinkedList`๊ฐ€ ๋” ํšจ๊ณผ์ ์ด๋‹ค.
117+
118+
### ArrayList
119+
120+
- ๋ฐฐ์—ด์„ ์ด์šฉํ•ด์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
121+
- ์žฅ์ : ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๋น ๋ฅด๋‹ค.
122+
- ๋‹จ์ : ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€์™€ ์‚ญ์ œ๊ฐ€ ๋А๋ฆฌ๋‹ค.
123+
124+
## LinkedList
125+
126+
๋ฐฐ์—ด์€ ๋ฏธ๋ฆฌ ํŠน์ •ํ•œ ์—ฐ๊ฒฐ๋œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๊ณ , ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ํ•„์š”ํ•  ๋•Œ ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ด๋‹ค.
127+
๋ฐฐ์—ด์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ `๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ`๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
128+
129+
## LinkedList ๊ตฌ์กฐ
130+
131+
![Untitled](img/ArrayVSLinkedList/linkedlist-1.png)
132+
133+
### ๋…ธ๋“œ
134+
135+
์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ '๋…ธ๋“œ'๋ผ๋Š” ๊ฐ์ฒด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
136+
137+
- Data๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„
138+
- ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๊ณต๊ฐ„
139+
140+
```c
141+
struct LinkedList {
142+
int data;
143+
struct LinkedList *next;
144+
}
145+
```
146+
147+
![Untitled](img/ArrayVSLinkedList/linkedlist-2png.png)
148+
149+
- ๊ฐ ๋…ธ๋“œ๋Š” ์—ฐ์†๋œ ๊ณต๊ฐ„์— ์ €์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์— ๋ถ„ํฌ๋˜์–ด ์žˆ๋‹ค.
150+
- ๊ฐ ๋…ธ๋“œ์— ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•จ์œผ๋กœ์จ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
151+
- ๋…ธ๋“œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‹ค์Œ ์ฃผ์†Œ๊ฐ€ NULL์ด๋ฉด ์ด๋…ธ๋“œ๋Š” ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
152+
153+
## LinkedList ์žฅ์ 
154+
155+
- ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
156+
- ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
157+
- ๋ฐ์ดํ„ฐ ์žฌ๊ตฌ์„ฑ์ด ์šฉ์ดํ•˜๋‹ค.
158+
- ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ ํ•ฉํ•˜๋‹ค.
159+
160+
## LinkedList ๋‹จ์ 
161+
162+
- ํŠน์ • ์œ„์น˜ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ํ• ๋•Œ ๋А๋ฆฌ๋‹ค.
163+
- ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
164+
165+
## ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
166+
### ์‹œ์ž‘๋ถ€๋ถ„์— ์ถ”๊ฐ€
167+
![insertFirst](img/ArrayVSLinkedList/linkedlist-3.png)
168+
169+
1. ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
170+
`Vertex temp = new Vertex(input)`
171+
2. ์ƒˆ๋กœ์šด ๋…ธ๋“œ์˜ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
172+
`temp.next = head`
173+
3. ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋…ธ๋“œ๊ฐ€ ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๊ฐ€ ๋˜๋„๋ก head์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค.
174+
`head = temp`
175+
176+
### ์ค‘๊ฐ„์— ์ถ”๊ฐ€
177+
- 3๋ฒˆ์งธ ์ž๋ฆฌ(์ธ๋ฑ์Šค 2)์— 90์„ ์ถ”๊ฐ€ํ•˜๊ธฐ
178+
![insert](img/ArrayVSLinkedList/linkedlist-5.png)
179+
![insertMiddle](img/ArrayVSLinkedList/linkedlist-4.png)
180+
181+
1. ์šฐ์„  3๋ฒˆ์งธ ์ž๋ฆฌ๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
182+
2. head๋ฅผ ์ฐธ์กฐํ•ด์„œ ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค.
183+
`Vertext temp1 = head`
184+
3. 23์ž๋ฆฌ์— ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์œ„์น˜์‹œํ‚ค๊ธฐ์œ„ํ•ด์„œ๋Š” 6์„ ์•Œ๊ณ ์žˆ์–ด์•ผํ•œ๋‹ค. 6์„ temp1์œผ๋กœ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค.
185+
```js
186+
//ํ˜„์žฌ k์˜ ๊ฐ’์€ 2
187+
while (--k != 0)
188+
temp1 = temp1.next
189+
```
190+
4. 6์˜ next๋ฅผ ์ด์šฉํ•ด์„œ 23์„ ์ฐพ์•„์„œ temp2๋กœ ์ง€์ •ํ•œ๋‹ค.
191+
`Vertext temp2 = temp1.next`
192+
5. ๊ฐ’์ด 90์ธ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
193+
`Vertext newVertex = new Vertex(input)`
194+
6. 6์˜ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
195+
`temp1.next = newVertex`
196+
7. ์ƒˆ๋กœ์šด ๋…ธ๋“œ์˜ ๋‹ค์Œ ๋…ธ๋“œ๋กœ 23๋ฒˆ์„ ์ง€์ •ํ•œ๋‹ค.
197+
`newVertex.next = temp2`
198+
199+
## ๋ฐ์ดํ„ฐ ์‚ญ์ œ
200+
- ์„ธ๋ฒˆ์งธ ๋…ธ๋“œ(์ธ๋ฑ์Šค 2)๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ
201+
202+
![](img/ArrayVSLinkedList/linkedlist-5.png)
203+
![](img/ArrayVSLinkedList/linkedlist-6.png)
204+
205+
1. head๋ฅผ ์ด์šฉํ•ด์„œ ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค.
206+
`Vertex cur = head`
207+
2. ๋‘๋ฒˆ์งธ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.
208+
```js
209+
//k = 2
210+
while(--k!=0)
211+
cur = cur.next
212+
```
213+
3. ์„ธ๋ฒˆ์งธ ๋…ธ๋“œ ์ฐพ๋Š”๋‹ค.
214+
`Vertex tobedeleted = cur.next`
215+
4. ๋‘๋ฒˆ์งธ ๋…ธ๋“œ์˜ next๋ฅผ 23์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
216+
`cur.next = cur.next.next`
217+
5. 90์„ ์‚ญ์ œํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.
218+
`delete tobedeleted`
219+
220+
## LinkedList ์—ฐ์‚ฐ๋“ค๊ณผ ์‹œ๊ฐ„ ๋ณต์žก๋„
221+
222+
- ๋ฐ์ดํ„ฐ ํƒ์ƒ‰: ์ˆœ์ฐจ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค.: `O(n)`
223+
- ์‚ฝ์ž…/์‚ญ์ œ: `O(1)`
224+
- ์›ํ•˜๋Š” ๋…ธ๋“œ์— ์ ‘๊ทผ + ์‚ฝ์ž…/์‚ญ์ œ: `O(n+1)`
225+
- ๊ฐ€์žฅ ์•ž์— ์ ‘๊ทผ + ์‚ฝ์ž…/์‚ญ์ œ: `O(1)`
226+
- ๊ฐ€์žฅ ๋’ค์— ์ ‘๊ทผ + ์‚ฝ์ž…: `O(1+1)`(tail ๋…ธ๋“œ ๋”ฐ๋กœ ์ง€์ •ํ•œ ๊ฒฝ์šฐ)
227+
- ๋’ค์—์„œ ๋‘๋ฒˆ์งธ ๋…ธ๋“œ(tail ๋…ธ๋“œ ์ „ ๋…ธ๋“œ)์ ‘๊ทผ + ์‚ญ์ œ: `O(n+1)`
228+
229+
## Array vs LinkedList
230+
Array๋Š” Random Access๋ฅผ ์ง€์›ํ•œ๋‹ค. ์š”์†Œ๋“ค์„ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ด๋‹ค.
231+
๋ฐ˜๋ฉด Linkedlist๋Š” Sequential Access๋ฅผ ์ง€์›ํ•œ๋‹ค. ์–ด๋–ค ์š”์†Œ๋ฅผ ์ ‘๊ทผํ•  ๋•Œ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉฐ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ์š”์†Œ์— ์ ‘๊ทผํ•  ๋•Œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.
232+
233+
์ €์žฅ ๋ฐฉ์‹๋„ ๋ฐฐ์—ด์—์„œ ์š”์†Œ๋“ค์€ ์ธ์ ‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ์—ฐ์ด์–ด ์ €์žฅ๋œ๋‹ค.
234+
๋ฐ˜๋ฉด Linkedlist์—์„œ๋Š” ์ƒˆ๋กœ์šด ์š”์†Œ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜ ์ฃผ์†Œ๊ฐ€ linkedlist์˜ ์ด์ „ ์š”์†Œ์— ์ €์žฅ๋œ๋‹ค.
235+
236+
๋ฐฐ์—ด์—์„œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๋Š” O(N)์ด ์†Œ์š”๋˜์ง€๋งŒ, Linkedlist์—์„œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๋Š” O(1)์ด ์†Œ์š”๋œ๋‹ค.
237+
238+
๋ฐฐ์—ด์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์„ ์–ธ ์‹œ ์ปดํŒŒ์ผ ํƒ€์ž„์— ํ• ๋‹น์ด ๋œ๋‹ค. (์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น)
239+
๋ฐ˜๋ฉด Linkedlist์—์„œ๋Š” ์ƒˆ๋กœ์šด ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ ๋Ÿฐํƒ€์ž„์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค. (๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น)
240+
241+
๋ฐฐ์—ด์€ Stack ์„น์…˜์— ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง„๋‹ค. ๋ฐ˜๋ฉด Linkedlist๋Š” Heap ์„น์…˜์— ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
242+
---
243+
244+
## ์ฐธ๊ณ 
245+
246+
[Array](https://blog.encrypted.gg/927?category=773649)
247+
[Array](https://kim-mj.tistory.com/236)
248+
[ArrayVSList](https://wayhome25.github.io/cs/2017/04/17/cs-18-1/)
249+
[LinkedList](https://opentutorials.org/module/1335/8821)
250+
[LinkedList](https://sycho-lego.tistory.com/17)
251+
[LinkedList](https://opentutorials.org/module/1335/8821)
252+
253+
## Q&A
254+
255+
---
256+
257+
> 1. Array์™€ LinkedList์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์„ธ์š”
258+
259+
> 2. Array(List)์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•๊ณผ ๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์žฅ์ ๊ณผ ๋‹จ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”.
260+
261+
> 3. Array๋ฅผ ์ ์šฉ์‹œํ‚ค๋ฉด ์ข‹์„ ๋ฐ์ดํ„ฐ์˜ ์˜ˆ๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ๋“ค์–ด์ฃผ์„ธ์š”. ๊ตฌ์ฒด์  ์˜ˆ์‹œ์™€ ํ•จ๊ป˜ Array๋ฅผ ์ ์šฉํ•˜๋ฉด ์ข‹์€ ์ด์œ , ๊ทธ๋ฆฌ๊ณ  Array๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ํ•จ๊ป˜ ์„œ์ˆ ํ•ด์ฃผ์„ธ์š”.

0 commit comments

Comments
ย (0)