์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ ์กฐ์ง๊ณผ ๊ด๋ฆฌ์์ ์ค์ํ ์ญํ ์ ํ๋ ์๋ฃ ๊ตฌ์กฐ์
๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์์ ์์น์ ์ ์ฅ๋ ์ผ๋ จ์ ๋
ธ๋๋ก ๊ตฌ์ฑ๋์ด, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ ๋
ธ๋๋ ๋ฐ์ดํฐ ๋ถ๋ถ๊ณผ ๋ค์ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๋ผ๋ ๋ ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํฉ๋๋ค.
์ฒ์ ๋ณด๋ฉด ๋ค์ ์ด๋ ต๊ฒ ๋๊ปด์ง ์ ์์ง๋ง ๊ฑฑ์ ํ์ง ๋ง์ธ์!
์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ๋ฌด์์ธ์ง, ์ ์ฌ์ฉํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ณ ์ ํ ์ฅ์ ์ด ์๋์ง ํต์ฌ๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ ๊น์?
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ผ๋ฐ ๋ฆฌ์คํธ์ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋์ ์ฌ๋ฌ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๊ณ ์๋์์ต๋๋ค. ์ฃผ์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฝ์
๊ณผ ์ญ์ ์ ์ฉ์ด์ฑ
๋ฆฌ์คํธ์์ ๋์ด ์๋ ์์ ์์น์ ์์๋ฅผ ์ฝ์
ํ๊ฑฐ๋ ์ญ์ ํ๋ ค๋ฉด ์ดํ ๋ชจ๋ ์์๋ฅผ ์ด๋ํด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ์๊ฐ ๋ณต์ก๋๋ O(n)์ด๋ฉฐ, ํนํ ๋ฆฌ์คํธ๊ฐ ์ปค์ง์๋ก ์ฑ๋ฅ ์ ํ๊ฐ ํฝ๋๋ค. ๋ฆฌ์คํธ์ ๋์ ๋ฐฉ์์ด๋ ๊ตฌํ์ด ์ต์ํ์ง ์๋ค๋ฉด Python ๋ฆฌ์คํธ ํํ ๋ฆฌ์ผ ์ ์ฐธ๊ณ ํ์ธ์.
๋ฐ๋ฉด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ค๋ฅด๊ฒ ๋์ํฉ๋๋ค. ์์๋ฅผ ๋น์ฐ์์ ์ธ ์ฌ๋ฌ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅํ๊ณ , ๋ค์ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ก ์๋ก ์ฐ๊ฒฐํฉ๋๋ค. ์ด ๊ตฌ์กฐ ๋๋ถ์ ๋งํฌ๋ง ์์ ํ๋ฉด ์์ ์์น์ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ ์ ์์ต๋๋ค.
์ฝ์
๋๋ ์ญ์ ์ง์ ์ ๋
ธ๋๋ฅผ ์ง์ ์ฐธ์กฐํ ์ ์๋ค๋ฉด, ํด๋น ์ฐ์ฐ ์์ฒด๋ O(1)์
๋๋ค. ๋ค๋ง ๊ทธ ์์น๋ฅผ ์ฐพ๊ธฐ ์ํ ์ํ์๋ ์ฌ์ ํ O(n)์ด ํ์ํ๋ฏ๋ก, O(1) ์ด์ ์ ๊ด๋ จ ๋
ธ๋์ ๋ํ ํฌ์ธํฐ๋ฅผ ์ด๋ฏธ ๊ฐ์ง๊ณ ์์ ๋(์: ๋ฆฌ์คํธ์ ๋จธ๋ฆฌ์์ ์์
ํ ๋)์๋ง ์ ์ฉ๋ฉ๋๋ค.
๋์ ํฌ๊ธฐ
Python ๋ฆฌ์คํธ๋ ๋์ ๋ฐฐ์ด์ด๋ฏ๋ก ํฌ๊ธฐ๋ฅผ ์์ ํ ์ ์๋ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค.
ํ์ง๋ง ์ด ๊ณผ์ ์๋ ๋ ํฐ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ผ๋ก์ ์ฌํ ๋น ๋ฑ ๋ณต์กํ ์์
์ด ์๋ฐ๋ฉ๋๋ค. ์ฌํ ๋น ์ ์์๋ฅผ ์ ๋ธ๋ก์ผ๋ก ๋ณต์ฌํด์ผ ํ๊ณ , ๋น์ฅ ํ์ ์ด์์ผ๋ก ๊ณต๊ฐ์ ํ ๋นํ ์๋ ์์ด ๋นํจ์จ์ ์
๋๋ค.
๋ฐ๋๋ก ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ฌํ ๋น์ด๋ ๋ฆฌ์ฌ์ด์ง ์์ด๋ ๋์ ์ผ๋ก ์ปค์ง๊ฑฐ๋ ์์์ง ์ ์์ต๋๋ค. ๋์ ์ ์ฐ์ฑ์ด ํ์ํ ์์
์ ๋ ์ ํฉํ ์ ํ์ด ๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ
๋ฆฌ์คํธ๋ ๋ชจ๋ ์์์ ๋ํด ์ฐ์๋ ๋ธ๋ก์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค. ์ด๊ธฐ ํฌ๊ธฐ๋ฅผ ๋์ด ํ์ฅ์ด ํ์ํ๋ฉด ๋ ํฐ ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์๋ก ํ ๋นํ๊ณ ๊ธฐ์กด ์์๋ฅผ ๋ชจ๋ ๋ณต์ฌํด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํนํ ํฐ ๋ฆฌ์คํธ์์ ์๊ฐ๋ ๋ง์ด ๋ค๊ณ ๋นํจ์จ์ ์
๋๋ค. ๋ฐ๋๋ก ์ด๊ธฐ ํฌ๊ธฐ๋ฅผ ๊ณผ๋ํ๊ฒ ์ก์ผ๋ฉด ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋ฉ๋๋ค.
์ด์ ๋นํด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ฐ ์์์ ๋ํด ๋ณ๋๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค. ์์๋ฅผ ์ถ๊ฐํ ๋๋ง๋ค ํ์ํ ๋งํผ๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ํ์ฉ์ด ๋ ํจ์จ์ ์
๋๋ค.
์ธ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น์?
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋์ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ ๋ฑ ์ผ๋ฐ ๋ฆฌ์คํธ์ ๋ฐฐ์ด ๋๋น ์ฅ์ ์ด ์์ง๋ง, ํ๊ณ๋ ์์ต๋๋ค. ๊ฐ ์์๊ฐ ๋ค์ ๋
ธ๋๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํ ํฌ์ธํฐ๋ฅผ ์ ์ฅํด์ผ ํ๋ฏ๋ก, ์์๋น ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ ํฝ๋๋ค. ๋ํ ์ด ์๋ฃ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ์ ๋ํ ์ง์ ์ ๊ทผ์ ํ์ฉํ์ง ์์ต๋๋ค. ํน์ ์์์ ์ ๊ทผํ๋ ค๋ฉด ๋ฆฌ์คํธ์ ์์๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ํํด์ผ ํ๋ฏ๋ก ํ์ ์๊ฐ ๋ณต์ก๋๋ O(n)์
๋๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ฐฐ์ด ์ค ๋ฌด์์ ์ ํํ ์ง๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์๊ตฌ ์ฌํญ์ ๋ฌ๋ ค ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ํนํ ์ ์ฉํฉ๋๋ค.
๋ง์ ์์๋ฅผ ์์ฃผ ์ฝ์
ํ๊ณ ์ญ์ ํด์ผ ํ ๋
๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์์ธกํ๊ธฐ ์ด๋ ต๊ฑฐ๋ ์์ฃผ ๋ณํ ๋
์์์ ๋ํ ์ง์ ์ ๊ทผ์ด ํ์๊ฐ ์๋ ๋
๋ฐ์ดํฐ์
์ ์์๋ ๊ตฌ์กฐ๊ฐ ํฐ ๊ฒฝ์ฐ
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ข
๋ฅ
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ธ ๊ฐ์ง ์ข
๋ฅ๊ฐ ์์ผ๋ฉฐ, ๊ฐ๊ฐ ๋ค๋ฅธ ์ํฉ์์ ๊ณ ์ ํ ์ฅ์ ์ ์ ๊ณตํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ฐ์ฅ ๋จ์ํ ํํ๋ก, ๊ฐ ๋
ธ๋๊ฐ ๋ฐ์ดํฐ์ ๋ค์ ๋
ธ๋์ ๋ํ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง๋๋ค. ๋จธ๋ฆฌ(์ฒซ ๋ฒ์งธ ๋
ธ๋)์์ ๊ผฌ๋ฆฌ(๋ง์ง๋ง ๋
ธ๋)๊น์ง ํ ๋ฐฉํฅ์ผ๋ก๋ง ์ํํ ์ ์์ต๋๋ค.
๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ ๋
ธ๋๋ ๋ณดํต ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ฐ์ดํฐ : ๋
ธ๋์ ์ ์ฅ๋๋ ์ค์ ์ ๋ณด
๋ค์ ํฌ์ธํฐ : ๋ค์ ๋
ธ๋์ ๋ํ ์ฐธ์กฐ. ๋ง์ง๋ง ๋
ธ๋์ ๋ค์ ํฌ์ธํฐ๋ ๋ณดํต null๋ก ์ค์ ๋ฉ๋๋ค.
์ด ์๋ฃ ๊ตฌ์กฐ๋ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์ํํ ์ ์์ผ๋ฏ๋ก, ๊ฐ์ด๋ ์ธ๋ฑ์ค๋ก ํน์ ์์์ ์ ๊ทผํ๋ ค๋ฉด ๋จธ๋ฆฌ๋ถํฐ ์ํ๋ ๋
ธ๋๋ฅผ ์ฐพ์ ๋๊น์ง ์์ฐจ์ ์ผ๋ก ์ด๋ํด์ผ ํฉ๋๋ค. ์ด ์ฐ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ O(n)์ด๋ฉฐ, ํฐ ๋ฆฌ์คํธ์์๋ ๋นํจ์จ์ ์
๋๋ค.
๋ฐ๋ฉด ๋ฆฌ์คํธ์ ์์ ๋ถ๋ถ์์ ๋
ธ๋๋ฅผ ์ฝ์
ํ๊ฑฐ๋ ์ญ์ ํ๋ ์์
์ ๋งค์ฐ ํจ์จ์ ์ด๋ฉฐ ์๊ฐ ๋ณต์ก๋๋ O(1)์
๋๋ค. ๊ทธ๋ฌ๋ ์ค๊ฐ์ด๋ ๋์์์ ์ฝ์
/์ญ์ ๋ ํด๋น ์ง์ ๊น์ง ๋ฆฌ์คํธ๋ฅผ ์ํํด์ผ ํ๋ฏ๋ก O(n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค.
์ด๋ฌํ ํน์ฑ ๋๋ฌธ์ ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ฆฌ์คํธ์ ์์ ๋ถ๋ถ์์ ์์ฃผ ์ฐ์ฐ์ ์ํํ ๋ ์ ์ฉํฉ๋๋ค.
์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ
์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ
๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋จ์ ์ค ํ๋๋ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์ํํ ์ ์์ด ํ์ํ ๋ ์ด์ ๋
ธ๋๋ก ๋๋์๊ฐ ์ ์๋ค๋ ์ ์
๋๋ค. ์ด ์ ์ฝ์ ์๋ฐฉํฅ ํ์์ด ํ์ํ ์ฐ์ฐ์ ์ ํํฉ๋๋ค.
์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ฐ ๋
ธ๋์ ์ถ๊ฐ ํฌ์ธํฐ๋ฅผ ํฌํจํด ๋ฆฌ์คํธ๋ฅผ ์๋ฐฉํฅ์ผ๋ก ์ํํ ์ ์๋๋ก ํฉ๋๋ค. ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ ๋
ธ๋๋ ๋ฐ์ดํฐ, ๋ค์ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ, ์ด์ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ ์ธ ์์๋ฅผ ๊ฐ์ง๋๋ค.
์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ง์ง๋ง ๋
ธ๋๊ฐ ์ฒซ ๋ฒ์งธ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌ์ผ ์ํ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋ ํน์ํ ํํ์
๋๋ค. ์ง๊ธ๊น์ง ๋ณธ ๋จ์ผ/์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ฌ๋ฆฌ ๋์ด ์๊ณ ๋ฐ๋ณตํด์ ์ํํฉ๋๋ค.
์ด๋ฌํ ์ํ์ ํน์ฑ์ ๋ง์ง๋ง ํ๋ ์ด์ด์์ ์ฒซ ํ๋ ์ด์ด๋ก ์ด์ด์ง๋ ๋ณด๋๊ฒ์์ด๋ ๋ผ์ด๋๋ก๋น ์ค์ผ์ค๋ง ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ ๋ฑ, ์ฐ์์ ์ผ๋ก ๋ฐ๋ณต ์ํํด์ผ ํ๋ ์ํฉ์ ์ ํฉํฉ๋๋ค.
์๊ฐ ๋ณต์ก๋ ์์ฝ
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ Python ๋ฆฌ์คํธ๋ฅผ ํ๋์ ๋น๊ตํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฐ์ฐ ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ฐฐ์ด/Python ๋ฆฌ์คํธ ์ธ๋ฑ์ค๋ก ์ ๊ทผ O(n) O(1) ๊ฐ์ผ๋ก ํ์ O(n) O(n) ์๋ถ๋ถ์ ์ฝ์
O(1) O(n) ๋๋ถ๋ถ์ ์ฝ์
O(n) ํ๊ท O(1) ์ค๊ฐ์ ์ฝ์
O(n) O(n) ์๋ถ๋ถ์์ ์ญ์ O(1) O(n) ๋๋ถ๋ถ์์ ์ญ์ O(n) ํ๊ท O(1)
ํต์ฌ ์์ : ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋จธ๋ฆฌ(head)์์์ ์ฝ์
๊ณผ ์ญ์ (O(1))์ ๊ฐํ์ง๋ง, ๊ทธ ์ธ์๋ ๋ถ๋ฆฌํฉ๋๋ค. ์๋ฃ ๊ตฌ์กฐ์ ์์ ๋ถ๋ถ์์ ์์๋ฅผ ์์ฃผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ์ง ์๋๋ค๋ฉด, ์ผ๋ฐ Python ๋ฆฌ์คํธ๊ฐ ๋ ๋์ ์ ํ์ผ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
Python์์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
์ด์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ๋
, ์ฌ์ฉ ์ด์ , ๋ณํ์ ์ดํดํ์ผ๋ Python์ผ๋ก ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ํํ ๋ฆฌ์ผ์์ ์ฌ์ฉํ๋ ๋
ธํธ๋ถ์ ์ด DataLab ์ํฌ๋ถ ์์๋ ํ์ธํ ์ ์์ต๋๋ค. ๋ณต์ฌ๋ณธ์ ๋ง๋ค๋ฉด ์ฝ๋๋ฅผ ์ง์ ์์ ํ๊ณ ์คํํ ์ ์์ต๋๋ค. ๋ก์ปฌ ์คํ์์ ๋ฌธ์ ๊ฐ ์๊ธธ ๋ ํนํ ์ ์ฉํฉ๋๋ค!
๋
ธ๋ ์ด๊ธฐํ
์์ ๋ฐฐ์ ๋ฏ, ๋
ธ๋๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์์๋ก์ ๋ฐ์ดํฐ์ ๋ค์ ๋
ธ๋์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ฅํฉ๋๋ค. Python์์ ๋
ธ๋๋ฅผ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
class Node :
def __init__ ( self, data) :
self. data = data
self. next = None
def __repr__ ( self) :
return f"Node( { self. data} )" ์ ๊ณต
์ ์ฝ๋๋ ๋ ๊ฐ์ง ์ฃผ์ ๋์์ผ๋ก ๋
ธ๋๋ฅผ ์ด๊ธฐํํฉ๋๋ค. ๋
ธ๋์ โdataโ ์์ฑ์๋ ํด๋น ๋
ธ๋๊ฐ ๋ด์ ์ค์ ์ ๋ณด๊ฐ ํ ๋น๋ฉ๋๋ค. โnextโ ์์ฑ์ ๋ค์ ๋
ธ๋์ ์ฃผ์๋ฅผ ๋ํ๋ด๋ฉฐ, ํ์ฌ๋ None์ผ๋ก ์ค์ ๋์ด ๋ฆฌ์คํธ์ ๋ค๋ฅธ ๋
ธ๋์ ์ฐ๊ฒฐ๋์ด ์์ง ์์์ ์๋ฏธํฉ๋๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ ๋
ธ๋๋ฅผ ์ถ๊ฐํด ๋๊ฐ๋ฉด์ ์ด ์์ฑ์ ๋ค์ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ์
๋ฐ์ดํธ๋ฉ๋๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ ํด๋์ค ์์ฑ
๋ค์์ผ๋ก ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํด๋์ค๋ฅผ ๋ง๋ญ๋๋ค. ์ด ํด๋์ค๋ ์ฝ์
๊ณผ ์ญ์ ๋ฑ ๋
ธ๋ ๊ด๋ฆฌ์ ํ์ํ ๋ชจ๋ ์ฐ์ฐ์ ์บก์ํํฉ๋๋ค. ์ฐ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ๊ฒ ์ต๋๋ค.
class LinkedList :
def __init__ ( self) :
self. head = None ์ ๊ณต
self.head๋ฅผ None์ผ๋ก ์ค์ ํจ์ผ๋ก์จ, ์ด๊ธฐ์๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ๋น์ด ์๊ณ ๊ฐ๋ฆฌํฌ ๋
ธ๋๊ฐ ์์์ ๋ช
์ํฉ๋๋ค. ์ด์ ์ ๋
ธ๋๋ฅผ ์ฝ์
ํด ๋ฆฌ์คํธ๋ฅผ ์ฑ์ ๋ณด๊ฒ ์ต๋๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์๋ถ๋ถ์ ์ ๋
ธ๋ ์ฝ์
LinkedList ํด๋์ค ์์ ์ ๋
ธ๋๋ฅผ ์์ฑํ์ฌ ๋ฆฌ์คํธ์ ์์์ ๋ฐฐ์นํ๋ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.
def insertAtBeginning ( self, new_data) :
new_node = Node( new_data)
new_node. next = self. head
self. head = new_node ์ ๊ณต
์ด ๋ฉ์๋๋ฅผ ํธ์ถํ ๋๋ง๋ค ์ง์ ํ ๋ฐ์ดํฐ๋ก ์ ๋
ธ๋๊ฐ ์์ฑ๋ฉ๋๋ค. ์ ๋
ธ๋์ next ํฌ์ธํฐ๋ฅผ ํ์ฌ ๋จธ๋ฆฌ๋ก ์ค์ ํ์ฌ ๊ธฐ์กด ๋
ธ๋๋ค ์์ ๋ฐฐ์นํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ์๋ก ๋ง๋ ๋
ธ๋๋ฅผ ๋ฆฌ์คํธ์ ๋จธ๋ฆฌ๋ก ์ง์ ํฉ๋๋ค.
์ด์ ์ฝ์
์ฐ์ฐ์ ์๋ ๋ฐฉ์์ ๋ ์ ์ดํดํ๊ธฐ ์ํด ๋จ์ด๋ค์ ์ฝ์
ํด ๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉฐ ๋ด์ฉ์ ์ถ๋ ฅํ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋ด
์๋ค.
def printList ( self) :
temp = self. head
while temp:
print ( temp. data, end= ' ' )
temp = temp. next
print ( ) ์ ๊ณต
์ ๋ฉ์๋๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ด์ฉ์ ์ถ๋ ฅํฉ๋๋ค. ์ด์ ์ ์ํ ๋ฉ์๋๋ค์ ์ฌ์ฉํด โthe quick brown foxโ๋ผ๋ ๋จ์ด๋ค์ ๋ฆฌ์คํธ์ ์ฑ์ ๋ฃ๊ฒ ์ต๋๋ค.
if __name__ == '__main__' :
llist = LinkedList( )
llist. insertAtBeginning( 'fox' )
llist. insertAtBeginning( 'brown' )
llist. insertAtBeginning( 'quick' )
llist. insertAtBeginning( 'the' )
llist. printList( ) ์ ๊ณต
์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค.
"the quick brown fox"
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋๋ถ๋ถ์ ์ ๋
ธ๋ ์ฝ์
LinkedList ํด๋์ค์ insertAtEnd๋ผ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋ฆฌ์คํธ์ ๋์ ์ ๋
ธ๋๋ฅผ ์ถ๊ฐํ๊ฒ ์ต๋๋ค. ๋ฆฌ์คํธ๊ฐ ๋น์ด ์์ผ๋ฉด ์ ๋
ธ๋๊ฐ ๋จธ๋ฆฌ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ํ์ฌ ๋ง์ง๋ง ๋
ธ๋ ๋ค์ ์ ๋
ธ๋๋ฅผ ์ด์ด ๋ถ์
๋๋ค. ๋์ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
def insertAtEnd ( self, new_data) :
new_node = Node( new_data)
if self. head is None :
self. head = new_node
return
last = self. head
while last. next :
last = last. next
last. next = new_node์ ๊ณต
์ด ๋ฉ์๋๋ ๋จผ์ ์ ๋
ธ๋๋ฅผ ์์ฑํ ๋ค, ๋ฆฌ์คํธ๊ฐ ๋น์ด ์์ผ๋ฉด ๋จธ๋ฆฌ๋ก ์ง์ ํฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ฆฌ์คํธ๋ฅผ ์ํํ์ฌ ๋ง์ง๋ง ๋
ธ๋๋ฅผ ์ฐพ๊ณ , ๊ทธ ๋
ธ๋์ ํฌ์ธํฐ๋ฅผ ์ ๋
ธ๋๋ก ์ค์ ํฉ๋๋ค.
์ด์ ์ด ๋ฉ์๋๋ฅผ LinkedList ํด๋์ค์ ํฌํจํ๊ณ , ๋ฆฌ์คํธ์ ๋์ ๋จ์ด๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฉ์ธ ํจ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์ธ์.
if __name__ == '__main__' :
llist = LinkedList( )
llist. insertAtBeginning( 'fox' )
llist. insertAtBeginning( 'brown' )
llist. insertAtBeginning( 'quick' )
llist. insertAtBeginning( 'the' )
llist. insertAtEnd( 'jumps' )
llist. printList( ) ์ ๊ณต
์ฌ๊ธฐ์๋ insertAtEnd ๋ฉ์๋๋ฅผ ํธ์ถํด ๋ฆฌ์คํธ์ ๋์ โjumpsโ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค.
"the quick brown fox jumps"
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์๋ถ๋ถ์์ ๋
ธ๋ ์ญ์
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ๋
ธ๋๋ฅผ ์ญ์ ํ๋ ์์
์ ๊ฐ๋จํฉ๋๋ค. ๋จธ๋ฆฌ๋ฅผ ๋ ๋ฒ์งธ ๋
ธ๋๋ก ๊ฐ๋ฆฌํค๊ฒ ํ๋ฉด ์ฒซ ๋ฒ์งธ ๋
ธ๋๋ ๋ ์ด์ ๋ฆฌ์คํธ์ ์ผ๋ถ๊ฐ ์๋๋๋ค. ์ด๋ฅผ ๊ตฌํํ๋ ค๋ฉด LinkedList ํด๋์ค์ ๋ค์ ๋ฉ์๋๋ฅผ ํฌํจํ์ธ์.
def deleteFromBeginning ( self) :
if self. head is None :
return "The list is empty"
self. head = self. head. next ์ ๊ณต
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋๋ถ๋ถ์์ ๋
ธ๋ ์ญ์
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ๋
ธ๋๋ฅผ ์ญ์ ํ๋ ค๋ฉด ๋ฆฌ์คํธ๋ฅผ ์ํํ์ฌ ๋์์ ๋ ๋ฒ์งธ ๋
ธ๋๋ฅผ ์ฐพ๊ณ , ๊ทธ ๋
ธ๋์ next ํฌ์ธํฐ๋ฅผ None์ผ๋ก ๋ฐ๊ฟ์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ง์ง๋ง ๋
ธ๋๊ฐ ๋ฆฌ์คํธ์์ ์ ๊ฑฐ๋ฉ๋๋ค. ๋ค์ ๋ฉ์๋๋ฅผ LinkedList ํด๋์ค์ ์ถ๊ฐํ์ธ์.
def deleteFromEnd ( self) :
if self. head is None :
return "The list is empty"
if self. head. next is None :
self. head = None
return
temp = self. head
while temp. next . next :
temp = temp. next
temp. next = None ์ ๊ณต
์ ๋ฉ์๋๋ ๋จผ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ๋น์ด ์๋์ง ํ์ธํ๊ณ , ๋น์ด ์๋ค๋ฉด ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค. ๋
ธ๋๊ฐ ํ๋๋ฟ์ด๋ฉด ๊ทธ ๋
ธ๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ๋
ธ๋๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ๋์์ ๋ ๋ฒ์งธ ๋
ธ๋๋ฅผ ์ฐพ์ ๊ทธ ๋
ธ๋์ ๋ค์ ์ฐธ์กฐ๋ฅผ None์ผ๋ก ์
๋ฐ์ดํธํฉ๋๋ค.
์ด์ ๋ฉ์ธ ํจ์๋ฅผ ์์ ํด ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์๊ณผ ๋์์ ์์๋ฅผ ์ญ์ ํด ๋ด
์๋ค.
if __name__ == '__main__' :
llist = LinkedList( )
llist. insertAtBeginning( 'fox' )
llist. insertAtBeginning( 'brown' )
llist. insertAtBeginning( 'quick' )
llist. insertAtBeginning( 'the' )
llist. insertAtEnd( 'jumps' )
print ( "List before deletion:" )
llist. printList( )
llist. deleteFromBeginning( )
llist. deleteFromEnd( )
print ( "List after deletion:" )
llist. printList( ) ์ ๊ณต
์ ์ฝ๋๋ ์ญ์ ์ ํ์ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ์ฌ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์์ ์ฝ์
๋ฐ ์ญ์ ์ฐ์ฐ์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ๋ณด์ฌ ์ค๋๋ค. ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ด ๋ํ๋ฉ๋๋ค.
List before deletion:
the quick brown fox jumps
List after deletion:
quick brown fox์ ๊ณต
ํน์ ๊ฐ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ๊ฒ์ํ๊ธฐ
๋ง์ง๋ง์ผ๋ก ํ์ตํ ์ฐ์ฐ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ํน์ ๊ฐ์ ์ฐพ๋ ๋ฐฉ๋ฒ์
๋๋ค. ์ด๋ฅผ ์ํด ๋ฉ์๋๋ ๋ฆฌ์คํธ์ ๋จธ๋ฆฌ์์ ์์ํด ๊ฐ ๋
ธ๋๋ฅผ ์ํํ๋ฉฐ ๋
ธ๋์ ๋ฐ์ดํฐ๊ฐ ์ฐพ๋ ๊ฐ๊ณผ ์ผ์นํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๊ตฌํ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
def search ( self, value) :
current = self. head
position = 0
while current:
if current. data == value:
return f"Value ' { value} ' found at position { position} "
current = current. next
position += 1
return f"Value ' { value} ' not found in the list" ์ ๊ณต
์์ ๋ง๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ํน์ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด, ๋ฐฉ๊ธ ๋ง๋ search ๋ฉ์๋๋ฅผ ๋ฉ์ธ ํจ์์ ํฌํจํ์ธ์.
if __name__ == '__main__' :
llist = LinkedList( )
llist. insertAtBeginning( 'fox' )
llist. insertAtBeginning( 'brown' )
llist. insertAtBeginning( 'quick' )
llist. insertAtBeginning( 'the' )
llist. insertAtEnd( 'jumps' )
print ( "List before deletion:" )
llist. printList( )
llist. deleteFromBeginning( )
llist. deleteFromEnd( )
print ( "List after deletion:" )
llist. printList( )
print ( llist. search( 'quick' ) )
print ( llist. search( 'lazy' ) ) ์ ๊ณต
์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค.
List before deletion:
the quick brown fox jumps
List after deletion:
quick brown fox
Value 'quick' found at position 0
Value 'lazy' not found in the list ์ ๊ณต
๋จ์ด โquickโ์ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ์์น์ ์กด์ฌํ๋ฏ๋ก ์ฑ๊ณต์ ์ผ๋ก ์ฐพ์ ์ ์์ต๋๋ค. ๋ฐ๋ฉด โlazyโ๋ ๋ฆฌ์คํธ์ ์๊ธฐ ๋๋ฌธ์ ๊ฒ์๋์ง ์์ต๋๋ค.
๋ง๋ฌด๋ฆฌ ์๊ฐ
์ฌ๊ธฐ๊น์ง ์ค์
จ๋ค๋ฉด ์ถํํฉ๋๋ค! ์ด์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ธฐ๋ณธ ์๋ฆฌ, ๊ตฌ์กฐ์ ์ข
๋ฅ, ์์ ์ถ๊ฐ/์ญ์ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ์ํ ๋ฐฉ๋ฒ๊น์ง ํํํ ์ดํดํ์
จ์ต๋๋ค.
ํ์ง๋ง ์ฌ๊ธฐ๊ฐ ๋์ ์๋๋๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์๋ฃ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ ์ธ๊ณ์ ์ถ๋ฐ์ ์ผ ๋ฟ์
๋๋ค. ์ดํด๋ฅผ ๋ ๊น๊ฒ ํ ์ ์๋ ๋ค์ ๋จ๊ณ๋ฅผ ์๊ฐํฉ๋๋ค.
์ง์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด ๋ณด์ธ์
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฝ๋ฉ ๋๋ ๋ฐ์ดํฐ ์ฌ์ด์ธ์ค ํ๋ก์ ํธ์ ํตํฉํด ์ค์ ์ ์ ์ฉํด ๋ณด์ธ์. ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ํ์ผ ์์คํ
๊ฐ๋ฐ, ํด์ ํ
์ด๋ธ ๊ตฌ์ฑ, GPS ๋ด๋น๊ฒ์ด์
์์คํ
๋ฐ ๋ณด๋๊ฒ์ ์ ์ ๋ฑ ๋ค์ํ ๊ณณ์ ํ์ฉ๋ฉ๋๋ค. ์ง์ ํ๋ก์ ํธ๋ฅผ ์์ํด ๋ณด๋ ค๋ฉด Python, R, SQL๋ก ์ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์๋ ค ์ฃผ๋ ๋ฌด๋ฃ ๊ฐ์ด๋ํ ๋ฐ์ดํฐ ์ฌ์ด์ธ์ค ํ๋ก์ ํธ ๋ฅผ ํ์ธํ์ธ์.
์๋ฃ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ ํ์ต
ํธ๋ฆฌ, ์คํ, ํ์ ๊ฐ์ ๋ค๋ฅธ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์ฐ๋ ๊ฒ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ํ ์์ฐ์ค๋ฌ์ด ํ์ฅ์
๋๋ค. ์ด ๊ตฌ์กฐ๋ค์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์๋ฆฌ๋ฅผ ํ ๋๋ก ๋ ๋ค์ํ ๊ณ์ฐ ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๊ฒ ํด ์ค๋๋ค. ์๋ฅผ ๋ค์ด ํธ๋ฆฌ์ ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ๋
์ ๊ณ์ธต์ ํํ๋ก ํ์ฅํด ๊ฐ ๋
ธ๋๊ฐ ์ฌ๋ฌ ์์์ ์ฐ๊ฒฐ๋ ์ ์๋๋ก ํฉ๋๋ค.
์ด ๊ฐ๋
๋ค์ด ๋ฏ์ค๊ฒ ๋๊ปด์ง๋๋ผ๋ ๊ฑฑ์ ํ์ง ๋ง์ธ์! Datacamp์๋ Python์ผ๋ก ๋ฐฐ์ฐ๋ ์๋ฃ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ ์ ์ฉ ๊ฐ์๊ฐ ์์ด ์ด๋ฌํ ๊ฐ๋
์ ๋ ์์ธํ ๋ค๋ฃน๋๋ค. ์คํ, ํธ๋ฆฌ, ํด์ ํ
์ด๋ธ, ํ, ๊ทธ๋ํ ๊ฐ์ ์๋ฃ ๊ตฌ์กฐ๋ถํฐ ์์ํด, ์ ์ฐจ ํ์ ๋ฐ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๊ฒ ๋์ด ๋ ํจ์จ์ ์ธ ํ๋ก๊ทธ๋๋จธ์ด์ ๋ฌธ์ ํด๊ฒฐ์๊ฐ ๋ ์ ์์ต๋๋ค.
๊ณ ๊ธ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ฐ๋
ํ๊ตฌ
์ด ํํ ๋ฆฌ์ผ์์๋ ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ๋ฉฐ ์ฝ์
, ์ญ์ , ์ํ ๊ฐ์ ์ฐ์ฐ์ ๋ค๋ค์ต๋๋ค.
๋ ๋์๊ฐ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ตฌํ์ ํ์ตํด ๋ณด์ธ์. ์คํต ๋ฆฌ์คํธ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ๋ค๋ฅธ ํ์ฅ์ผ๋ก, ์์์ ๋ ๋น ๋ฅด๊ฒ ์ ๊ทผํด ๊ฒ์ ์๋๋ฅผ ๋์ฌ ์ค๋๋ค.
์ด๋ฌํ ๊ณ ๊ธ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ํ์ตํ๋ฉด ๊ธฐ์ ์ญ๋์ด ํ ๋จ๊ณ ๋์ฝํ๊ณ , ํ๋ก๊ทธ๋๋ฐ ๋ฅ๋ ฅ์ด ํฌ๊ฒ ํฅ์๋์ด ๋ฐ์ดํฐ ์ฌ์ด์ธ์ค, ์ํํธ์จ์ด ๊ฐ๋ฐ, ๋จธ์ ๋ฌ๋ ์์ง๋์ด๋ง ๋ฑ์์ ๋ ๋ณต์กํ ๊ณผ์ ์ ๋๋นํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ณ ๊ธ ์ฃผ์ ์ ๋์ ํ๊ธฐ ์ ์ ๋ ๊ธฐ์ด์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์
๋ฌธ์ด ํ์ํ๋ค๋ฉด, Python Programming ์คํฌ ํธ๋์ ์ดํด๋ณด์ธ์. ์ธ์ด์ ๊ธฐ์ด๋ฅผ ์ตํ ์ ์๋ ์ผ๋ จ์ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ ์กฐ์ง๊ณผ ๊ด๋ฆฌ์์ ์ค์ํ ์ญํ ์ ํ๋ ์๋ฃ ๊ตฌ์กฐ์ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์์ ์์น์ ์ ์ฅ๋ ์ผ๋ จ์ ๋ ธ๋๋ก ๊ตฌ์ฑ๋์ด, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ ๋ ธ๋๋ ๋ฐ์ดํฐ ๋ถ๋ถ๊ณผ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๋ผ๋ ๋ ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํฉ๋๋ค.
์ฒ์ ๋ณด๋ฉด ๋ค์ ์ด๋ ต๊ฒ ๋๊ปด์ง ์ ์์ง๋ง ๊ฑฑ์ ํ์ง ๋ง์ธ์!
์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ๋ฌด์์ธ์ง, ์ ์ฌ์ฉํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ณ ์ ํ ์ฅ์ ์ด ์๋์ง ํต์ฌ๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ ๊น์?
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ผ๋ฐ ๋ฆฌ์คํธ์ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋์ ์ฌ๋ฌ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๊ณ ์๋์์ต๋๋ค. ์ฃผ์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฝ์ ๊ณผ ์ญ์ ์ ์ฉ์ด์ฑ
๋ฆฌ์คํธ์์ ๋์ด ์๋ ์์ ์์น์ ์์๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ค๋ฉด ์ดํ ๋ชจ๋ ์์๋ฅผ ์ด๋ํด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ์๊ฐ ๋ณต์ก๋๋ O(n)์ด๋ฉฐ, ํนํ ๋ฆฌ์คํธ๊ฐ ์ปค์ง์๋ก ์ฑ๋ฅ ์ ํ๊ฐ ํฝ๋๋ค. ๋ฆฌ์คํธ์ ๋์ ๋ฐฉ์์ด๋ ๊ตฌํ์ด ์ต์ํ์ง ์๋ค๋ฉด Python ๋ฆฌ์คํธ ํํ ๋ฆฌ์ผ์ ์ฐธ๊ณ ํ์ธ์.
๋ฐ๋ฉด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ค๋ฅด๊ฒ ๋์ํฉ๋๋ค. ์์๋ฅผ ๋น์ฐ์์ ์ธ ์ฌ๋ฌ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅํ๊ณ , ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ก ์๋ก ์ฐ๊ฒฐํฉ๋๋ค. ์ด ๊ตฌ์กฐ ๋๋ถ์ ๋งํฌ๋ง ์์ ํ๋ฉด ์์ ์์น์ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ ์ ์์ต๋๋ค.
์ฝ์ ๋๋ ์ญ์ ์ง์ ์ ๋ ธ๋๋ฅผ ์ง์ ์ฐธ์กฐํ ์ ์๋ค๋ฉด, ํด๋น ์ฐ์ฐ ์์ฒด๋ O(1)์ ๋๋ค. ๋ค๋ง ๊ทธ ์์น๋ฅผ ์ฐพ๊ธฐ ์ํ ์ํ์๋ ์ฌ์ ํ O(n)์ด ํ์ํ๋ฏ๋ก, O(1) ์ด์ ์ ๊ด๋ จ ๋ ธ๋์ ๋ํ ํฌ์ธํฐ๋ฅผ ์ด๋ฏธ ๊ฐ์ง๊ณ ์์ ๋(์: ๋ฆฌ์คํธ์ ๋จธ๋ฆฌ์์ ์์ ํ ๋)์๋ง ์ ์ฉ๋ฉ๋๋ค.
๋์ ํฌ๊ธฐ
Python ๋ฆฌ์คํธ๋ ๋์ ๋ฐฐ์ด์ด๋ฏ๋ก ํฌ๊ธฐ๋ฅผ ์์ ํ ์ ์๋ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค.
ํ์ง๋ง ์ด ๊ณผ์ ์๋ ๋ ํฐ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ผ๋ก์ ์ฌํ ๋น ๋ฑ ๋ณต์กํ ์์ ์ด ์๋ฐ๋ฉ๋๋ค. ์ฌํ ๋น ์ ์์๋ฅผ ์ ๋ธ๋ก์ผ๋ก ๋ณต์ฌํด์ผ ํ๊ณ , ๋น์ฅ ํ์ ์ด์์ผ๋ก ๊ณต๊ฐ์ ํ ๋นํ ์๋ ์์ด ๋นํจ์จ์ ์ ๋๋ค.
๋ฐ๋๋ก ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ฌํ ๋น์ด๋ ๋ฆฌ์ฌ์ด์ง ์์ด๋ ๋์ ์ผ๋ก ์ปค์ง๊ฑฐ๋ ์์์ง ์ ์์ต๋๋ค. ๋์ ์ ์ฐ์ฑ์ด ํ์ํ ์์ ์ ๋ ์ ํฉํ ์ ํ์ด ๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ
๋ฆฌ์คํธ๋ ๋ชจ๋ ์์์ ๋ํด ์ฐ์๋ ๋ธ๋ก์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค. ์ด๊ธฐ ํฌ๊ธฐ๋ฅผ ๋์ด ํ์ฅ์ด ํ์ํ๋ฉด ๋ ํฐ ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์๋ก ํ ๋นํ๊ณ ๊ธฐ์กด ์์๋ฅผ ๋ชจ๋ ๋ณต์ฌํด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํนํ ํฐ ๋ฆฌ์คํธ์์ ์๊ฐ๋ ๋ง์ด ๋ค๊ณ ๋นํจ์จ์ ์ ๋๋ค. ๋ฐ๋๋ก ์ด๊ธฐ ํฌ๊ธฐ๋ฅผ ๊ณผ๋ํ๊ฒ ์ก์ผ๋ฉด ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋ฉ๋๋ค.
์ด์ ๋นํด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ฐ ์์์ ๋ํด ๋ณ๋๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค. ์์๋ฅผ ์ถ๊ฐํ ๋๋ง๋ค ํ์ํ ๋งํผ๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ํ์ฉ์ด ๋ ํจ์จ์ ์ ๋๋ค.
์ธ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น์?
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋์ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ ๋ฑ ์ผ๋ฐ ๋ฆฌ์คํธ์ ๋ฐฐ์ด ๋๋น ์ฅ์ ์ด ์์ง๋ง, ํ๊ณ๋ ์์ต๋๋ค. ๊ฐ ์์๊ฐ ๋ค์ ๋ ธ๋๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํ ํฌ์ธํฐ๋ฅผ ์ ์ฅํด์ผ ํ๋ฏ๋ก, ์์๋น ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ ํฝ๋๋ค. ๋ํ ์ด ์๋ฃ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ์ ๋ํ ์ง์ ์ ๊ทผ์ ํ์ฉํ์ง ์์ต๋๋ค. ํน์ ์์์ ์ ๊ทผํ๋ ค๋ฉด ๋ฆฌ์คํธ์ ์์๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ํํด์ผ ํ๋ฏ๋ก ํ์ ์๊ฐ ๋ณต์ก๋๋ O(n)์ ๋๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ฐฐ์ด ์ค ๋ฌด์์ ์ ํํ ์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ ์ฌํญ์ ๋ฌ๋ ค ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ํนํ ์ ์ฉํฉ๋๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ข ๋ฅ
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ธ ๊ฐ์ง ์ข ๋ฅ๊ฐ ์์ผ๋ฉฐ, ๊ฐ๊ฐ ๋ค๋ฅธ ์ํฉ์์ ๊ณ ์ ํ ์ฅ์ ์ ์ ๊ณตํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ฐ์ฅ ๋จ์ํ ํํ๋ก, ๊ฐ ๋ ธ๋๊ฐ ๋ฐ์ดํฐ์ ๋ค์ ๋ ธ๋์ ๋ํ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง๋๋ค. ๋จธ๋ฆฌ(์ฒซ ๋ฒ์งธ ๋ ธ๋)์์ ๊ผฌ๋ฆฌ(๋ง์ง๋ง ๋ ธ๋)๊น์ง ํ ๋ฐฉํฅ์ผ๋ก๋ง ์ํํ ์ ์์ต๋๋ค.
๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ ๋ ธ๋๋ ๋ณดํต ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์ด ์๋ฃ ๊ตฌ์กฐ๋ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์ํํ ์ ์์ผ๋ฏ๋ก, ๊ฐ์ด๋ ์ธ๋ฑ์ค๋ก ํน์ ์์์ ์ ๊ทผํ๋ ค๋ฉด ๋จธ๋ฆฌ๋ถํฐ ์ํ๋ ๋ ธ๋๋ฅผ ์ฐพ์ ๋๊น์ง ์์ฐจ์ ์ผ๋ก ์ด๋ํด์ผ ํฉ๋๋ค. ์ด ์ฐ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ O(n)์ด๋ฉฐ, ํฐ ๋ฆฌ์คํธ์์๋ ๋นํจ์จ์ ์ ๋๋ค.
๋ฐ๋ฉด ๋ฆฌ์คํธ์ ์์ ๋ถ๋ถ์์ ๋ ธ๋๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ์์ ์ ๋งค์ฐ ํจ์จ์ ์ด๋ฉฐ ์๊ฐ ๋ณต์ก๋๋ O(1)์ ๋๋ค. ๊ทธ๋ฌ๋ ์ค๊ฐ์ด๋ ๋์์์ ์ฝ์ /์ญ์ ๋ ํด๋น ์ง์ ๊น์ง ๋ฆฌ์คํธ๋ฅผ ์ํํด์ผ ํ๋ฏ๋ก O(n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค.
์ด๋ฌํ ํน์ฑ ๋๋ฌธ์ ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ฆฌ์คํธ์ ์์ ๋ถ๋ถ์์ ์์ฃผ ์ฐ์ฐ์ ์ํํ ๋ ์ ์ฉํฉ๋๋ค.
์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ
์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ
๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋จ์ ์ค ํ๋๋ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์ํํ ์ ์์ด ํ์ํ ๋ ์ด์ ๋ ธ๋๋ก ๋๋์๊ฐ ์ ์๋ค๋ ์ ์ ๋๋ค. ์ด ์ ์ฝ์ ์๋ฐฉํฅ ํ์์ด ํ์ํ ์ฐ์ฐ์ ์ ํํฉ๋๋ค.
์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ฐ ๋ ธ๋์ ์ถ๊ฐ ํฌ์ธํฐ๋ฅผ ํฌํจํด ๋ฆฌ์คํธ๋ฅผ ์๋ฐฉํฅ์ผ๋ก ์ํํ ์ ์๋๋ก ํฉ๋๋ค. ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ ๋ ธ๋๋ ๋ฐ์ดํฐ, ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ, ์ด์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ ์ธ ์์๋ฅผ ๊ฐ์ง๋๋ค.
์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ง์ง๋ง ๋ ธ๋๊ฐ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌ์ผ ์ํ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋ ํน์ํ ํํ์ ๋๋ค. ์ง๊ธ๊น์ง ๋ณธ ๋จ์ผ/์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ฌ๋ฆฌ ๋์ด ์๊ณ ๋ฐ๋ณตํด์ ์ํํฉ๋๋ค.
์ด๋ฌํ ์ํ์ ํน์ฑ์ ๋ง์ง๋ง ํ๋ ์ด์ด์์ ์ฒซ ํ๋ ์ด์ด๋ก ์ด์ด์ง๋ ๋ณด๋๊ฒ์์ด๋ ๋ผ์ด๋๋ก๋น ์ค์ผ์ค๋ง ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ ๋ฑ, ์ฐ์์ ์ผ๋ก ๋ฐ๋ณต ์ํํด์ผ ํ๋ ์ํฉ์ ์ ํฉํฉ๋๋ค.
์๊ฐ ๋ณต์ก๋ ์์ฝ
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ Python ๋ฆฌ์คํธ๋ฅผ ํ๋์ ๋น๊ตํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํต์ฌ ์์ : ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋จธ๋ฆฌ(head)์์์ ์ฝ์ ๊ณผ ์ญ์ (O(1))์ ๊ฐํ์ง๋ง, ๊ทธ ์ธ์๋ ๋ถ๋ฆฌํฉ๋๋ค. ์๋ฃ ๊ตฌ์กฐ์ ์์ ๋ถ๋ถ์์ ์์๋ฅผ ์์ฃผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ์ง ์๋๋ค๋ฉด, ์ผ๋ฐ Python ๋ฆฌ์คํธ๊ฐ ๋ ๋์ ์ ํ์ผ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
Python์์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
์ด์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ๋ , ์ฌ์ฉ ์ด์ , ๋ณํ์ ์ดํดํ์ผ๋ Python์ผ๋ก ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ํํ ๋ฆฌ์ผ์์ ์ฌ์ฉํ๋ ๋ ธํธ๋ถ์ ์ด DataLab ์ํฌ๋ถ์์๋ ํ์ธํ ์ ์์ต๋๋ค. ๋ณต์ฌ๋ณธ์ ๋ง๋ค๋ฉด ์ฝ๋๋ฅผ ์ง์ ์์ ํ๊ณ ์คํํ ์ ์์ต๋๋ค. ๋ก์ปฌ ์คํ์์ ๋ฌธ์ ๊ฐ ์๊ธธ ๋ ํนํ ์ ์ฉํฉ๋๋ค!
๋ ธ๋ ์ด๊ธฐํ
์์ ๋ฐฐ์ ๋ฏ, ๋ ธ๋๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์์๋ก์ ๋ฐ์ดํฐ์ ๋ค์ ๋ ธ๋์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ฅํฉ๋๋ค. Python์์ ๋ ธ๋๋ฅผ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ฝ๋๋ ๋ ๊ฐ์ง ์ฃผ์ ๋์์ผ๋ก ๋ ธ๋๋ฅผ ์ด๊ธฐํํฉ๋๋ค. ๋ ธ๋์ โdataโ ์์ฑ์๋ ํด๋น ๋ ธ๋๊ฐ ๋ด์ ์ค์ ์ ๋ณด๊ฐ ํ ๋น๋ฉ๋๋ค. โnextโ ์์ฑ์ ๋ค์ ๋ ธ๋์ ์ฃผ์๋ฅผ ๋ํ๋ด๋ฉฐ, ํ์ฌ๋ None์ผ๋ก ์ค์ ๋์ด ๋ฆฌ์คํธ์ ๋ค๋ฅธ ๋ ธ๋์ ์ฐ๊ฒฐ๋์ด ์์ง ์์์ ์๋ฏธํฉ๋๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ ๋ ธ๋๋ฅผ ์ถ๊ฐํด ๋๊ฐ๋ฉด์ ์ด ์์ฑ์ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ ํด๋์ค ์์ฑ
๋ค์์ผ๋ก ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํด๋์ค๋ฅผ ๋ง๋ญ๋๋ค. ์ด ํด๋์ค๋ ์ฝ์ ๊ณผ ์ญ์ ๋ฑ ๋ ธ๋ ๊ด๋ฆฌ์ ํ์ํ ๋ชจ๋ ์ฐ์ฐ์ ์บก์ํํฉ๋๋ค. ์ฐ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ๊ฒ ์ต๋๋ค.
self.head๋ฅผ None์ผ๋ก ์ค์ ํจ์ผ๋ก์จ, ์ด๊ธฐ์๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ๋น์ด ์๊ณ ๊ฐ๋ฆฌํฌ ๋ ธ๋๊ฐ ์์์ ๋ช ์ํฉ๋๋ค. ์ด์ ์ ๋ ธ๋๋ฅผ ์ฝ์ ํด ๋ฆฌ์คํธ๋ฅผ ์ฑ์ ๋ณด๊ฒ ์ต๋๋ค.์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์๋ถ๋ถ์ ์ ๋ ธ๋ ์ฝ์
LinkedListํด๋์ค ์์ ์ ๋ ธ๋๋ฅผ ์์ฑํ์ฌ ๋ฆฌ์คํธ์ ์์์ ๋ฐฐ์นํ๋ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.์ด ๋ฉ์๋๋ฅผ ํธ์ถํ ๋๋ง๋ค ์ง์ ํ ๋ฐ์ดํฐ๋ก ์ ๋ ธ๋๊ฐ ์์ฑ๋ฉ๋๋ค. ์ ๋ ธ๋์ next ํฌ์ธํฐ๋ฅผ ํ์ฌ ๋จธ๋ฆฌ๋ก ์ค์ ํ์ฌ ๊ธฐ์กด ๋ ธ๋๋ค ์์ ๋ฐฐ์นํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ์๋ก ๋ง๋ ๋ ธ๋๋ฅผ ๋ฆฌ์คํธ์ ๋จธ๋ฆฌ๋ก ์ง์ ํฉ๋๋ค.
์ด์ ์ฝ์ ์ฐ์ฐ์ ์๋ ๋ฐฉ์์ ๋ ์ ์ดํดํ๊ธฐ ์ํด ๋จ์ด๋ค์ ์ฝ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉฐ ๋ด์ฉ์ ์ถ๋ ฅํ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋ด ์๋ค.
์ ๋ฉ์๋๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ด์ฉ์ ์ถ๋ ฅํฉ๋๋ค. ์ด์ ์ ์ํ ๋ฉ์๋๋ค์ ์ฌ์ฉํด โthe quick brown foxโ๋ผ๋ ๋จ์ด๋ค์ ๋ฆฌ์คํธ์ ์ฑ์ ๋ฃ๊ฒ ์ต๋๋ค.
์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค.
"the quick brown fox"์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋๋ถ๋ถ์ ์ ๋ ธ๋ ์ฝ์
LinkedListํด๋์ค์insertAtEnd๋ผ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋ฆฌ์คํธ์ ๋์ ์ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ฒ ์ต๋๋ค. ๋ฆฌ์คํธ๊ฐ ๋น์ด ์์ผ๋ฉด ์ ๋ ธ๋๊ฐ ๋จธ๋ฆฌ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ํ์ฌ ๋ง์ง๋ง ๋ ธ๋ ๋ค์ ์ ๋ ธ๋๋ฅผ ์ด์ด ๋ถ์ ๋๋ค. ๋์ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.์ด ๋ฉ์๋๋ ๋จผ์ ์ ๋ ธ๋๋ฅผ ์์ฑํ ๋ค, ๋ฆฌ์คํธ๊ฐ ๋น์ด ์์ผ๋ฉด ๋จธ๋ฆฌ๋ก ์ง์ ํฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ฆฌ์คํธ๋ฅผ ์ํํ์ฌ ๋ง์ง๋ง ๋ ธ๋๋ฅผ ์ฐพ๊ณ , ๊ทธ ๋ ธ๋์ ํฌ์ธํฐ๋ฅผ ์ ๋ ธ๋๋ก ์ค์ ํฉ๋๋ค.
์ด์ ์ด ๋ฉ์๋๋ฅผ
LinkedListํด๋์ค์ ํฌํจํ๊ณ , ๋ฆฌ์คํธ์ ๋์ ๋จ์ด๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฉ์ธ ํจ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์ธ์.์ฌ๊ธฐ์๋
insertAtEnd๋ฉ์๋๋ฅผ ํธ์ถํด ๋ฆฌ์คํธ์ ๋์ โjumpsโ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค."the quick brown fox jumps"์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์๋ถ๋ถ์์ ๋ ธ๋ ์ญ์
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ์ญ์ ํ๋ ์์ ์ ๊ฐ๋จํฉ๋๋ค. ๋จธ๋ฆฌ๋ฅผ ๋ ๋ฒ์งธ ๋ ธ๋๋ก ๊ฐ๋ฆฌํค๊ฒ ํ๋ฉด ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ ๋ ์ด์ ๋ฆฌ์คํธ์ ์ผ๋ถ๊ฐ ์๋๋๋ค. ์ด๋ฅผ ๊ตฌํํ๋ ค๋ฉด
LinkedListํด๋์ค์ ๋ค์ ๋ฉ์๋๋ฅผ ํฌํจํ์ธ์.์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋๋ถ๋ถ์์ ๋ ธ๋ ์ญ์
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ๋ ธ๋๋ฅผ ์ญ์ ํ๋ ค๋ฉด ๋ฆฌ์คํธ๋ฅผ ์ํํ์ฌ ๋์์ ๋ ๋ฒ์งธ ๋ ธ๋๋ฅผ ์ฐพ๊ณ , ๊ทธ ๋ ธ๋์ next ํฌ์ธํฐ๋ฅผ None์ผ๋ก ๋ฐ๊ฟ์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ง์ง๋ง ๋ ธ๋๊ฐ ๋ฆฌ์คํธ์์ ์ ๊ฑฐ๋ฉ๋๋ค. ๋ค์ ๋ฉ์๋๋ฅผ
LinkedListํด๋์ค์ ์ถ๊ฐํ์ธ์.์ ๋ฉ์๋๋ ๋จผ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ๋น์ด ์๋์ง ํ์ธํ๊ณ , ๋น์ด ์๋ค๋ฉด ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค. ๋ ธ๋๊ฐ ํ๋๋ฟ์ด๋ฉด ๊ทธ ๋ ธ๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ๋ ธ๋๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ๋์์ ๋ ๋ฒ์งธ ๋ ธ๋๋ฅผ ์ฐพ์ ๊ทธ ๋ ธ๋์ ๋ค์ ์ฐธ์กฐ๋ฅผ None์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
์ด์ ๋ฉ์ธ ํจ์๋ฅผ ์์ ํด ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์๊ณผ ๋์์ ์์๋ฅผ ์ญ์ ํด ๋ด ์๋ค.
์ ์ฝ๋๋ ์ญ์ ์ ํ์ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ์ฌ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์์ ์ฝ์ ๋ฐ ์ญ์ ์ฐ์ฐ์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ๋ณด์ฌ ์ค๋๋ค. ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ด ๋ํ๋ฉ๋๋ค.
ํน์ ๊ฐ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ๊ฒ์ํ๊ธฐ
๋ง์ง๋ง์ผ๋ก ํ์ตํ ์ฐ์ฐ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ํน์ ๊ฐ์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๋ฅผ ์ํด ๋ฉ์๋๋ ๋ฆฌ์คํธ์ ๋จธ๋ฆฌ์์ ์์ํด ๊ฐ ๋ ธ๋๋ฅผ ์ํํ๋ฉฐ ๋ ธ๋์ ๋ฐ์ดํฐ๊ฐ ์ฐพ๋ ๊ฐ๊ณผ ์ผ์นํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๊ตฌํ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ ๋ง๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ํน์ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด, ๋ฐฉ๊ธ ๋ง๋ search ๋ฉ์๋๋ฅผ ๋ฉ์ธ ํจ์์ ํฌํจํ์ธ์.
์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค.
๋จ์ด โquickโ์ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ์์น์ ์กด์ฌํ๋ฏ๋ก ์ฑ๊ณต์ ์ผ๋ก ์ฐพ์ ์ ์์ต๋๋ค. ๋ฐ๋ฉด โlazyโ๋ ๋ฆฌ์คํธ์ ์๊ธฐ ๋๋ฌธ์ ๊ฒ์๋์ง ์์ต๋๋ค.
๋ง๋ฌด๋ฆฌ ์๊ฐ
์ฌ๊ธฐ๊น์ง ์ค์ จ๋ค๋ฉด ์ถํํฉ๋๋ค! ์ด์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ธฐ๋ณธ ์๋ฆฌ, ๊ตฌ์กฐ์ ์ข ๋ฅ, ์์ ์ถ๊ฐ/์ญ์ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ์ํ ๋ฐฉ๋ฒ๊น์ง ํํํ ์ดํดํ์ จ์ต๋๋ค.
ํ์ง๋ง ์ฌ๊ธฐ๊ฐ ๋์ ์๋๋๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์๋ฃ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ ์ธ๊ณ์ ์ถ๋ฐ์ ์ผ ๋ฟ์ ๋๋ค. ์ดํด๋ฅผ ๋ ๊น๊ฒ ํ ์ ์๋ ๋ค์ ๋จ๊ณ๋ฅผ ์๊ฐํฉ๋๋ค.
์ง์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด ๋ณด์ธ์
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฝ๋ฉ ๋๋ ๋ฐ์ดํฐ ์ฌ์ด์ธ์ค ํ๋ก์ ํธ์ ํตํฉํด ์ค์ ์ ์ ์ฉํด ๋ณด์ธ์. ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ํ์ผ ์์คํ ๊ฐ๋ฐ, ํด์ ํ ์ด๋ธ ๊ตฌ์ฑ, GPS ๋ด๋น๊ฒ์ด์ ์์คํ ๋ฐ ๋ณด๋๊ฒ์ ์ ์ ๋ฑ ๋ค์ํ ๊ณณ์ ํ์ฉ๋ฉ๋๋ค. ์ง์ ํ๋ก์ ํธ๋ฅผ ์์ํด ๋ณด๋ ค๋ฉด Python, R, SQL๋ก ์ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์๋ ค ์ฃผ๋ ๋ฌด๋ฃ ๊ฐ์ด๋ํ ๋ฐ์ดํฐ ์ฌ์ด์ธ์ค ํ๋ก์ ํธ๋ฅผ ํ์ธํ์ธ์.
์๋ฃ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ ํ์ต
ํธ๋ฆฌ, ์คํ, ํ์ ๊ฐ์ ๋ค๋ฅธ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์ฐ๋ ๊ฒ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ํ ์์ฐ์ค๋ฌ์ด ํ์ฅ์ ๋๋ค. ์ด ๊ตฌ์กฐ๋ค์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์๋ฆฌ๋ฅผ ํ ๋๋ก ๋ ๋ค์ํ ๊ณ์ฐ ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๊ฒ ํด ์ค๋๋ค. ์๋ฅผ ๋ค์ด ํธ๋ฆฌ์ ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ๋ ์ ๊ณ์ธต์ ํํ๋ก ํ์ฅํด ๊ฐ ๋ ธ๋๊ฐ ์ฌ๋ฌ ์์์ ์ฐ๊ฒฐ๋ ์ ์๋๋ก ํฉ๋๋ค.
์ด ๊ฐ๋ ๋ค์ด ๋ฏ์ค๊ฒ ๋๊ปด์ง๋๋ผ๋ ๊ฑฑ์ ํ์ง ๋ง์ธ์! Datacamp์๋ Python์ผ๋ก ๋ฐฐ์ฐ๋ ์๋ฃ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ ์ ์ฉ ๊ฐ์๊ฐ ์์ด ์ด๋ฌํ ๊ฐ๋ ์ ๋ ์์ธํ ๋ค๋ฃน๋๋ค. ์คํ, ํธ๋ฆฌ, ํด์ ํ ์ด๋ธ, ํ, ๊ทธ๋ํ ๊ฐ์ ์๋ฃ ๊ตฌ์กฐ๋ถํฐ ์์ํด, ์ ์ฐจ ํ์ ๋ฐ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๊ฒ ๋์ด ๋ ํจ์จ์ ์ธ ํ๋ก๊ทธ๋๋จธ์ด์ ๋ฌธ์ ํด๊ฒฐ์๊ฐ ๋ ์ ์์ต๋๋ค.
๊ณ ๊ธ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ฐ๋ ํ๊ตฌ
์ด ํํ ๋ฆฌ์ผ์์๋ ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ๋ฉฐ ์ฝ์ , ์ญ์ , ์ํ ๊ฐ์ ์ฐ์ฐ์ ๋ค๋ค์ต๋๋ค.
๋ ๋์๊ฐ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ตฌํ์ ํ์ตํด ๋ณด์ธ์. ์คํต ๋ฆฌ์คํธ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ๋ค๋ฅธ ํ์ฅ์ผ๋ก, ์์์ ๋ ๋น ๋ฅด๊ฒ ์ ๊ทผํด ๊ฒ์ ์๋๋ฅผ ๋์ฌ ์ค๋๋ค.
์ด๋ฌํ ๊ณ ๊ธ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ํ์ตํ๋ฉด ๊ธฐ์ ์ญ๋์ด ํ ๋จ๊ณ ๋์ฝํ๊ณ , ํ๋ก๊ทธ๋๋ฐ ๋ฅ๋ ฅ์ด ํฌ๊ฒ ํฅ์๋์ด ๋ฐ์ดํฐ ์ฌ์ด์ธ์ค, ์ํํธ์จ์ด ๊ฐ๋ฐ, ๋จธ์ ๋ฌ๋ ์์ง๋์ด๋ง ๋ฑ์์ ๋ ๋ณต์กํ ๊ณผ์ ์ ๋๋นํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ณ ๊ธ ์ฃผ์ ์ ๋์ ํ๊ธฐ ์ ์ ๋ ๊ธฐ์ด์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ์ด ํ์ํ๋ค๋ฉด, Python Programming ์คํฌ ํธ๋์ ์ดํด๋ณด์ธ์. ์ธ์ด์ ๊ธฐ์ด๋ฅผ ์ตํ ์ ์๋ ์ผ๋ จ์ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค.