Linear Data Structure

ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ €์žฅ๋œ๋‹ค. ๋”๋ถˆ์–ด, ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์–ด๋–ค ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ๊ฐ๊ฐ์˜ ์Šค๋ ˆ๋“œ ์•ˆ์—๋Š” ์‚ฌ์šฉ๋œ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋“ฑ์˜ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ํ•œ์ •๋˜์–ด์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ๋˜๋Š” ๊ฒƒ์ด ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

์ž๋ฃŒ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ, ๋น„ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ๋กœ ๋‚˜๋‰œ๋‹ค.

์„ ํ˜•๊ตฌ์กฐ๋ž€, ์ž๋ฃŒ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•˜๋‚˜์”ฉ ๋‚˜์—ด์‹œํ‚จ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ์ด๋‹ค. ์ฆ‰, 1:1 ๊ด€๊ณ„์˜ ๊ตฌ์กฐ์ด๋ฉฐ ์šฐ๋ฆฌ์—๊ฒŒ ์ต์ˆ™ํ•œ ๋ฐฐ์—ด, ๋ฆฌ์ŠคํŠธ, ์Šคํƒ, ํ ๋“ฑ์ด ์ด ๊ตฌ์กฐ์— ํ•ด๋‹น๋œ๋‹ค.

๋น„ ์„ ํ˜•๊ตฌ์กฐ๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ๋’ค์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋กœ, 1:N ์˜ ๊ด€๊ณ„, N:N์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ํŠธ๋ฆฌ์™€ ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ๊ฐ€ ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ์‚ดํŽด ๋ณด๋ ค ํ•œ๋‹ค.

Array

๋ฐฐ์—ด์€ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ฐจ๋ก€๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

๋ฐฐ์—ด ์„ ์–ธ ์‹œ ํฌ๊ธฐ๋ฅผ ์ •ํ•˜๋ฉด ๊ทธ ํฌ๊ธฐ๋กœ ๊ณ ์ • ๋˜๋ฉฐ, ์„ ์–ธ๋œ ๊ฐ’์€ ์žฌ ์„ ์–ธ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€ ํ•˜๋‹ค.

๋ฐฐ์—ด์˜ ์ฃผ์†Œ๋Š” ๋ฐฐ์—ด์— ์‚ฌ์šฉ๋œ ์ž๋ฃŒํ˜•์˜ ํฌ๊ธฐ ๋งŒํผ์ด๋‹ค. ์ฆ‰, int ํ˜• ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํฌ๊ธฐ๋„ intํ˜• ์˜ ํฌ๊ธฐ์ธ 4byte์ธ ๊ฒƒ์ด๋‹ค.

๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ด๋•Œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1) ์ด๋ฉฐ ์‚ฝ์ž… / ์‚ญ์ œ ์‹œ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ํ•œ ์นธ์”ฉ ์˜ฎ๊ฒจ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)์ด๋‹ค.

O(1) : ์ƒ์ˆ˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ์จ, ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์™€ ์ƒ๊ด€์—†์ด ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. (ํ•œ๋ฒˆ์˜ ์—ฐ์‚ฐ์œผ๋กœ ๊ฒฐ๊ณผ๋„์ถœ)

O(n) : ์„ ํ˜• ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ์จ, ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜ n์— ๋น„๋ก€ํ•˜์—ฌ ์—ฐ์‚ฐ์‹œ๊ฐ„์ด n์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๋น„๊ต์  ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•˜๊ณ , ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ์‚ฝ์ž…/์‚ญ์ œ์‹œ, O(n) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ ธ ๋А๋ฆฌ๋ฉฐ, ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋งŽ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

List

์ž๋ฃŒ๊ตฌ์กฐ ์ƒ์œผ๋กœ๋Š” ๋จผ์ € ์‚ดํŽด๋ณธ ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์ธ๋ฑ์Šค๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์Šค ๋Œ€์‹  ๊ฐ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

๊ตฌํ˜„ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์ˆœ์ฐจ ๋ฆฌ์ŠคํŠธ, ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๋‚˜๋‰œ๋‹ค.

์ˆœ์ฐจ ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์†ํ•ด ์ €์žฅํ•œ ๋ฆฌ์ŠคํŠธ์ด๋‹ค. ๋…ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ์™€ ๋ฌผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๊ฐ€ ๋™์ผํ•˜๋‹ค.

๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž… / ์‚ญ์ œ์‹œ ์—ฐ์†๋œ ๋ฌผ๋ฆฌ์  ์œ„์น˜๋ฅผ ์œ ์ง€ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ฒจ์ฃผ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๊ธฐ์— ํ•ด๋‹น ์—ฐ์‚ฐ์ด ๋งŽ๋‹ค๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋กœ ๋” ์นœ์ˆ™ํ•œ ํ‚ค์›Œ๋“œ๋กœ, ๊ฐ ๋…ธ๋“œ์— ์ €์žฅ๋œ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ์— ์˜ํ•ด ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—ฐ์†๋  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž…/์‚ญ์ œ์‹œ ์ˆœ์ฐจ ๋ฆฌ์ŠคํŠธ ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ด์ „๊ฐ’, ๋‹ค์Œ๊ฐ’์ด ๊ฐ€๋ฆฌ์ผฐ๋˜ ์ฃผ์†Œ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์‹œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n) ์ด๋ฉฐ, ์‚ฝ์ž…/์‚ญ์ œ์‹œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ด๋‹ค.

n๋ฒˆ์งธ ๋…ธ๋“œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด Head ์—์„œ n๋ฒˆ ์ด๋™ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰์‹œ O(n)์˜ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ , ์‚ฝ์ž…/์‚ญ์ œ์‹œ ์ฃผ๋ณ€ ๋…ธ๋“œ๋“ค์— ์—ฐ๊ฒฐ๋œ ์ฃผ์†Œ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ O(1)๋กœ ์ผ์ •ํ•˜๋‹ค.

Stack

์Šคํƒ์€ ์ปดํ“จํ„ฐ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์Œ“์•„๋†“์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.

๊ฐ€์žฅ ํฐ ํŠน์ง•์œผ๋กœ๋Š” ํ›„์ž…์„ ์ถœ (LIFO)์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š”๋ฐ, ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋น ์ ธ๋‚˜๊ฐ€๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ฆผ์ฒ˜๋Ÿผ top์œผ๋กœ ์ •ํ•ด์ง„ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ €์žฅ/์‚ญ์ œ์˜ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์‚ฝ์ž… ์—ฐ์‚ฐ์„ push, ์‚ญ์ œ ์—ฐ์‚ฐ์„ pop์ด๋ผ๊ณ  ํ•œ๋‹ค.

Queue

์Šคํƒ๊ณผ ๋‹ฌ๋ฆฌ ์„ ์ž…์„ ์ถœ (FIFO) ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํƒœ์Šคํฌ ํ์˜ ํ๊ฐ€ ๋ฐ”๋กœ ์ด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ž๋ฃŒ๊ตฌ์กฐ์˜ ํ•œ์ชฝ(back)์—์„  ์‚ฝ์ž…์—ฐ์‚ฐ๋งŒ, ๋ฐ˜๋Œ€์ชฝ(front)์—์„œ๋Š” ์‚ญ์ œ์—ฐ์‚ฐ๋งŒ ์ด๋ฃจ์–ด์ง€๋Š” ๋ฆฌ์ŠคํŠธ (๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋˜ํ•œ back๊ณผ front์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. )๋กœ์จ, ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ๋‹ค๋ฆด๋•Œ ์ค„์„œ๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค. ์ž…๋ ฅ๋™์ž‘์„ Enqueue, ์‚ญ์ œ ๋™์ž‘์„ Dequeue๋ผ๊ณ  ํ•œ๋‹ค.

Last updated