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