๋ฆฌ์คํธ๋ ์ ํ์ ์ธ ์๋ฃ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ผ๋ ฌ๋ก ๋์ฌ๋์ ํํ์ด๋ค.
๋ฐ์ดํฐ ๊ฐ์ ์์๊ฐ ์๋ค.
๋ฆฌ์คํธ์๋ ๋ฐ์ดํฐ ์ฝ์ , ๋ฐ์ดํฐ ์ญ์ , ๋ฆฌ์คํธ ๋ฐ์ดํฐ ํ์ํ๊ธฐ 3๊ฐ์ง์ ์ค์ํ ์ฐ์ฐ์ด ์๋ค.
List | ||
ArrayList | LinkedList | |
single Linked List | Double Linked List |
ArrayList (๋ฆฌ์คํธ - ๋ฐฐ์ด)
๋ฐฐ์ด ๊ธฐ๋ฐ์ ๋ฆฌ์คํธ
๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐ์์ ์ผ๋ก ์ฌ์ฉ
์ถ๊ฐ -> .add
์ญ์ -> .remove
ํ์ -> .get(์ธ๋ฑ์ค ๋ฒํธ)
ArrayList ์ฝ์
๋ฐฐ์ด์ ์ ์ธํ๋ฉด ์ ์ธ๋ ํฌ๊ธฐ์ ๊ณต๊ฐ์ ํ ๋น ๋ฐ๋๋ค.
๋ฐฐ์ด์ ๊ฐ์ด ์ฐฌ ๋ฐฐ์ด์์ ์ค๊ฐ์ ๊ฐ์ ์ฝ์ ํ๊ธฐ ์ํด์ ์ฝ์ ํ๋ ค๋ ์ธ๋ฑ์ค์ ๋ท์ชฝ ์ธ๋ฑ์ค๋ค์ ๋ชจ๋ ์ค๋ฅธ์ชฝ์ผ๋ก ํ์นธ์ฉ ๋จผ์ ์ด๋์์ผ ์ฃผ์ด์ผํ๋ค.
์ฎ๊ฒจ์ค ๋ฐ์ดํฐ๊ฐ 1๊ฐ๋ผ๋ฉด 1๋ฒ n๊ฐ ๋ผ๋ฉด n๋ฒ ์ด๋์์ผ์ค์ผํ๋ค. ์๋ 2๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ด๋์ํค๋ฏ๋ก 2๋ฒ ์ด๋ ์ํค๊ฒ ๋๋ค.
๋ฐ๋ผ์ ์๊ฐ ๋ณต์ก๋๋ O(N)์ด ๋๋ค.
ArrayList์ญ์
์ญ์ ํ์ ๋๋ N๊ฐ์ ๋ฐ์ดํฐ๋น N๋ฒ ์ด๋์ํค๊ธฐ ๋๋ฌธ์ O(N)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
ArrayList ํ์
ํ์ by index
๋ฐ์ดํฐ์ ๋๋ค ์์ธ์ค๋ก ํด๋น ์์น์ ๋ค์ด๋ ํธ๋ก ์ ๊ทผํ๊ธฐ ๋๋ฌธ ๋ฐ์ดํฐ๊ฐ ์๋ฌด๋ฆฌ ๋ง์๋ ํ๋ฒ์ ํด๋น ์์น์ ์ ๊ทผํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ O(1)์ด๋ค.
Linked List (๋ฆฌ์คํธ - ์ฐ๊ฒฐ ๋ฆฌ์คํธ)
๋งํฌ๋ ๋ฆฌ์คํธ๋ ๋ ธ๋๋ผ๋ ๊ฐ์ฒด๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๋ํ ๋ ธ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ํ๋์ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฅดํค๋ ๋ฅ์คํธ ํฌ์ธํฐ ํ๋๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค. ๋ ธ๋๋ค์ด ๋ค ์ฐ๊ฒฐ๋ ํํ๋ฅผ ๋งํฌ๋ ๋ฆฌ์คํธ๋ผ๊ณ ํ๋ค.
๊ฒ์
๋งํฌ๋ ๋ฆฌ์คํธ๋ ์ด๋ ์ด ๋ฆฌ์คํธ์ ๋ฌ๋ฆฌ ์ธ๋ฑ์ค๋ฅผ ํตํ random access ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
์์ ์ ๊ฐ๋ฅดํค๋ ๋ฅ์คํธ ํฌ์ธํฐ๋ง์ผ๋ก ์ ๊ทผ์ ํ ์ ์๊ธฐ ๋๋ฌธ์
N๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋งํฌ๋ ๋ฆฌ์คํธ์ ๊ฒ์์ ์๊ฐ ๋ณต์ก๋๋ O(N)์ด๋ค.
์ถ๊ฐ
Tail๋ ธ๋ ๋ค์์ผ๋ก ๋ถ๋๋ค.
ํ ์ผ ๋ ธ๋๊น์ง ์ฐพ์๊ฐ์ ๋ค์ ์ถ๊ฐํจ์ผ๋ก ํ ์ผ ๋ ธ๋ ๊น์ง ์ฐพ์๊ฐ๋ ๊ณผ์ ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๋O(N)์ ๊ฐ๋๋ค.
์ฝ์
์ด๋ ์ด ๋ฆฌ์คํธ์๋ ๋ค๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ํ์นธ์ฉ ๋ค ๋ฏธ๋ฃฐ ํ์๊ฐ ์๋ค. ๊ฐ๋จํ๊ฒ ํฌ์ธํฐ๋ง ์์ ํด์ฃผ๋ฉด ์ฝ์ ์ด ๋๋ค. ์ด๋ ์ฝ์ ํ๊ธฐ ์ํด ํด๋น ๋ ธ๋๊น์ง ์ฐพ์๊ฐ๋ ๊ณผ์ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ O(N)์ด๋ค.
์ญ์
์ด๋ ์ด ๋ฆฌ์คํธ์ ๋ฌ๋ฆฌ ์ญ์ ํ ๋ค ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ํ์นธ์ฉ ๋ค ๋์ด์ฌ ํ์๋ ์๋ค. ์ญ์ ํด์ผํ ๋ ธ๋๊น์ง ์ฐพ์๊ฐ๋ ๊ณผ์ ๋ง์ด ํ์ํ๋ค.
์์ ์ด ๊ฐ๊ณ ์๋ ๋ฅ์คํธ ํฌ์ธํฐ ๊ฐ์ ์ด์ ๋ ธ๋์ ๋ฅ์คํธ ํฌ์ธํฐ ๊ฐ์ผ๋ก ํ ๋นํด์ฃผ๊ณ ์์ ์ ์๋ฌด ์ฐธ์กฐ ๊ฐ๋ ๊ฐ๊ณ ์์ง์๊ธฐ ๋๋ฌธ์ JAVA์ ๊ฐ๋น์ง ์ฝ๋ ํฐ์์ ์๋์ผ๋ก ์ญ์ ๊ฐ ์ด๋ฃจ์ด์ง๋ค.
๋งํฌ๋ ๋ฆฌ์คํธ์ ์ฅ์
1. ๋ฐฐ์ด์ ๋ณต์ฌ(์ญ์ , ์ฝ์ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ๊ฐ๋ค์ด ์ค๋ฅธ์ชฝ์ด๋ ์ผ์ชฝ์ผ๋ก ํ๋์ฉ ์ด๋)๋ ์ฌํ ๋น ( ์ด๋ ์ด ๋ฆฌ์คํธ ๊ฒฝ์ฐ ๋ฆฌ์คํธ๊ฐ ๊ฝ์ฐจ๋ฉด ํฌ๊ธฐ๋ฅผ ๋ ๋๋ ค์ฃผ๋ ๊ณผ์ ์ด ์๋ค.) ์์ด ๋ฐ์ดํฐ ์ถ๊ฐ ๊ฐ๋ฅ
2. ์ ์ฐํ ๊ณต๊ฐ ( ์ด๋ ์ด ๋ฆฌ์คํธ ๊ฒฝ์ฐ ๋ค์ ๋น ๋ฐฐ์ด์ด ์ข๋ง ๋จ์๋ ๋ชจ๋ ์ก๊ณ ์์ง๋ง ๋งํฌ๋ ๋ฆฌ์คํธ๋ ์ฐ๋ ๊ณต๊ฐ ๋งํผ๋ง ๋์ด๋ฌ๋ค, ์ค์๋ค ํ๋ค.)
๋จ์
random access๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ๊ทผ์ ๋ํ ์๊ฐ์ด ๋์ด๋๋ค. O(N)์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
LinkedList ์ ArrayList ์ฐจ์ด
์ด๋ฌํ ์๊ฐ ๋ณต์ก๋ ์ฐจ์ด ๋๋ฌธ์ LinkedList ๋ ์ฝ์ ์ด๋ ์ญ์ ๊ฐ ๋ง์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๊ณ ArrayList ๋ ๊ฒ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๋ ์ฌ์ฉํ๋ค.
'Computer Science > Data structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ์ด ( ๊ณต๊ฐ ๋ณต์ก๋, ์๊ฐ ๋ณต์ก๋, ๋น ์ค ํ๊ธฐ๋ฒ Big-O) (0) | 2023.07.16 |
---|
๋๊ธ