10_Oct_2021 ๐Ÿฐ์—˜๋ฆฌ์Šค AI ํŠธ๋ž™ TIL: ์ž๋ฃŒ๊ตฌ์กฐ (๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ)

์œ ํ™˜์ตยท2021๋…„ 10์›” 13์ผ
0

์ž๋ฃŒ๊ตฌ์กฐ์˜ ์˜๋ฏธ

์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ์œผ๋‚˜, ์ €์žฅ๋œ ์ž๋ฃŒ์— ๋Œ€ํ•ด ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์˜ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์šฐ๋Š” ์ด์œ :
์ž๋ฃŒ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์žฅ๋‹จ์ ์ด ์กด์žฌํ•˜๋ฉฐ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•˜์—ฌ ์•Œ๋งž์€ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ์ž๋ฃŒ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋‹ด๊ณ  ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด, ์ ์ ˆํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์ถ”์ƒ์  ์ž๋ฃŒํ˜•

์–ด๋–ค ์ž๋ฃŒ์™€ ๊ทธ ์ž๋ฃŒ์— ๋Œ€ํ•œ ์—ฐ์‚ฐ(๋™์ž‘)๋“ค์˜ ์ˆ˜ํ•™์ ์ธ ์ •์˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๊ทธ ์ •์˜๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ •ํ™•ํ•˜๊ฒŒ ๋ช…์‹œ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.
์ถ”์ƒ์  ์ž๋ฃŒํ˜•์˜ ์ถ”์ƒ์ ์ด๋ผ๋Š” ๋‹จ์–ด์˜ ์˜๋ฏธ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด๋‹ค.

์ž๋ฃŒํ˜•

์ž๋ฃŒํ˜•์€ ์–ด๋–ค ์ž๋ฃŒ๊ฐ€ ์‹๋ณ„๋  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๊ณผ, ๊ทธ ์ž๋ฃŒ์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์—ฐ์‚ฐ์„ ์ œ๊ณตํ•œ๋‹ค.

65๋ผ๋Š” ์ž๋ฃŒ๋Š” ๊ทธ๋Œ€๋กœ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜๋„ ์žˆ๊ณ  ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ํ•ด์„ํ•œ 'A'๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ ์ด๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ํ•ด์„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž๋ฃŒํ˜•์„ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๋งŒ์ผ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ž๋ฃŒํ˜•์ด๋ผ๋ฉด ์‚ฌ์น™์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‚˜, ๋ฌธ์ž์˜ ๊ฒฝ์šฐ ์‚ฌ์น™์—ฐ์‚ฐ์„ ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

์ž๋ฃŒํ˜•์€ ์–ด๋–ค ์ž๋ฃŒ๊ฐ€ ์‹๋ณ„๋˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๊ณ , ์ž๋ฃŒ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์„ ๊ฒฐ์ •ํ•œ๋‹ค.
์ž๋ฃŒ๋ฅผ ํŠน์ • ๋ถ„๋ฅ˜์— ๋”ฐ๋ผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ •์˜์™€ ์ด์˜ ๊ตฌํ˜„์ด ์ž๋ฃŒํ˜•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ถ”์ƒ์  ์ž๋ฃŒํ˜•

์ถ”์ƒ์  ์ž๋ฃŒํ˜•์€ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ๋ช…์‹œํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ์ ์—์„œ ๊ตฌ๋ณ„๋œ๋‹ค.

๊ทธ๋ฆ‡์„ ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ๊ทธ๋ฆ‡์ด ๋‹ด๊ณ  ์žˆ๋Š” ์ž๋ฃŒ์™€ ๊ทธ ์ž๋ฃŒ์— ํ•ด๋‹นํ•˜๋Š” ์—ฐ์ƒ์˜ ์ •์˜๋ฅผ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค.

๊ทธ๋ฆ‡์ด ์Œ์‹์„ ๋‹ด๊ณ , ๊ทธ ๊ทธ๋ฆ‡์— ๋‹ด๊ธด ์Œ์‹์„ ๋จน์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋“ฏ, ์ถ”์ƒ์  ์ž๋ฃŒํ˜• ๋˜ํ•œ ์ž๋ฃŒ๋ฅผ ๋‹ด๊ณ  ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์–ด๋–ป๊ฒŒ ์ž๋ฃŒ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•์€ ์ฃผ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

์—ฌ๊ธฐ์„œ ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์— ์ž๋ฃŒ๋ฅผ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•˜๊ณ , ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์— ๋Œ€ํ•ด ๋ช…ํ™•ํžˆ ๊ตฌํ˜„๋œ ๊ฒƒ์„ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •๋ฆฌ

  • ์ถ”์ƒ์  ์ž๋ฃŒํ˜•: ์ž๋ฃŒ๋“ค๊ณผ, ๊ทธ ์ž๋ฃŒ์— ๋Œ€ํ•œ ์—ฐ์‚ฐ๋“ค์„ ๊ฐœ๋…์ ์œผ๋กœ ์ •์˜๋งŒ ํ•œ ๊ฒƒ
  • ์ž๋ฃŒ๊ตฌ์กฐ: ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ž๋ฃŒ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์ œ๊ณตํ•œ ๊ฒƒ

์ถ”์ƒ์  ์ž๋ฃŒํ˜•์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ž๋ฃŒํ˜•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ

์ฃผ์˜ ํŒŒ์ด์ฌ์˜ ๋ฆฌ์ŠคํŠธ์™€ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ์˜ ๋ฆฌ์ŠคํŠธ๋Š” ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋‹ค.

๋ฆฌ์ŠคํŠธ

๋ฆฌ์ŠคํŠธ๋Š” ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•˜๊ณ  ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋œ ๊ฐ’์„ ๊ฐ€์ง„ ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์ด๋‹ค.

๋ฆฌ์ŠคํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋Œ€ํ‘œ์  ์—ฐ์‚ฐ:

  • ์กฐํšŒ: ์ž„์˜์˜ ์œ„์น˜์˜ ์ž๋ฃŒ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํƒ์ƒ‰.
  • ์‚ฝ์ž…: ์ž„์˜์˜ ์œ„์น˜์— ์ž๋ฃŒ๋ฅผ ์ถ”๊ฐ€.
  • ์‚ญ์ œ: ์ž„์˜์˜ ์œ„์น˜์— ์ž๋ฃŒ๋ฅผ ์ œ๊ฑฐ.

๋ฆฌ์ŠคํŠธ๋ผ๋Š” ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์„ ๊ตฌํ˜„ํ•œ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๊ฐ€ ๋ฐฐ์—ด(array)์ด๋‹ค

๋ฒ ์—ด์— ์ €์žฅ๋˜๋Š” ๊ฐ’๋“ค์€ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒˆํ˜ธ(index)๋ฅผ ๊ฐ€์ง„๋‹ค.

let array = [1,2,3,4,5,6]; //index: 0,1,2,3,4,5

๋ฐฐ์—ด - ์กฐํšŒ

๋ฐฐ์—ด์€ ๋ฐฐ์—ด ๋‚ด์˜ ํŠน์ • ์ˆœ์„œ์˜ ๊ฐ’์„ ์กฐํšŒํ•˜๊ณ ์ž ํ•  ๋•Œ, ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅธ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐฐ์—ด - ์‚ฝ์ž…

๋ฐ˜๋ฉด, ์ž๋ฃŒ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ์—๋Š”, ์ƒˆ๋กœ์šด ์ž๋ฃŒ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด์„œ, ์ž๋ฃŒ๋“ค์˜ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒˆ๊ฑฐ๋กญ๋‹ค.
์‚ฝ์ž… ์—ฐ์‚ฐ์—์„œ๋Š” ์ถ”๊ฐ€๋œ ์ž๋ฃŒ๊ฐ€ ๋“ค์–ด๊ฐˆ ๊ณต๊ฐ„์„ ๋น„์›Œ์ฃผ๊ธฐ ์œ„ํ•ด, ๊ธฐ์กด ์ž๋ฃŒ๋Š” ํ•œ ์นธ์”ฉ ๋ฐ€๋ ค๋‚˜๊ฒŒ ๋œ๋‹ค.

๋ฐฐ์—ด - ์‚ญ์ œ

์‚ฝ์ž…๊ณผ ๋ฐ˜๋Œ€๋กœ, ์ œ๊ฑฐํ•  ์ธ๋ฑ์Šค์˜ ์ž๋ฃŒ๋ฅผ ๋น„์šฐ๊ณ  ์ž๋ฃŒ๊ฐ€ ์ค„์–ด๋“ค์—ˆ์œผ๋ฏ€๋กœ ๋นˆ์ž๋ฆฌ๋ฅผ ๋ฉ”๊พธ๊ธฐ ์œ„ํ•ด ์ž๋ฃŒ๋“ค์ด ํ•œ ์นธ์”ฉ ๋‹น๊ฒจ์ง„๋‹ค. -> ๋ฐฐ์—ด์ด ๋‹ด๊ณ  ์žˆ๋Š” ์ž๋ฃŒ๊ฐ€ ํ•˜๋‚˜ ์ค„์—ˆ์œผ๋ฏ€๋กœ, ๋‚จ๋Š” ๊ณต๊ฐ„๋„ ์ œ๊ฑฐํ•œ๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Linked List)

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

๋…ธ๋“œ๋Š” ์ž๋ฃŒ์™€ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ์ž๋ฃŒ๋Š” ์ €์žฅํ•˜๋Š” ๊ฐ’ ์ž์ฒด์ด๊ณ , ํฌ์ธํ„ฐ๋Š” ์ž์‹ ์˜ ๋‹ค์Œ ์ˆœ์„œ์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ - ํƒ์ƒ‰

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ์ด๋Ÿฌํ•œ ํŠน์„ฑ์œผ๋กœ ํŠน์ • ์œ„์น˜์˜ ์ž๋ฃŒ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ๋ฒˆ๊ฑฐ๋กญ๋‹ค. ์ฐพ๊ณ  ์‹ถ์€ ์ž๋ฃŒ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด, ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•˜๋ฉฐ ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋”ฐ๋ผ์„œ, ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ์ฐพ๋Š” ์ž๋ฃŒ์˜ ์œ„์น˜๊ฐ€ ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ฉ€์–ด์งˆ ์ˆ˜๋ก ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ๋งŽ์•„์ง„๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์žฅ์ ์€, ์ž๋ฃŒ์˜ ์ถ”๊ฐ€์™€ ์‚ญ์ œ์—์„œ ๋“œ๋Ÿฌ๋‚˜๋Š”๋ฐ,

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ - ์‚ฝ์ž…

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์—์„œ ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ์—๋Š”, ์ด์ „ ๋…ธ๋“œ์˜ ์•ž ๋’ค ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ ๊ด€๊ณ„๋ฅผ ๋Š์€ ํ›„, ์ถ”๊ฐ€ํ•  ์œ„์น˜์˜ ์ด์ „ ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ๋ฅผ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋กœ, ์ƒˆ๋กœ์šด ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ๋ฅผ ์ด์ „ ๋…ธ๋“œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค์ „ ๋…ธ๋“œ๋กœ ์„ค์ •ํ•˜๋ฉด ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ - ์‚ญ์ œ

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์‚ญ์ œ๋Š”, ์ œ๊ฑฐํ•  ๋…ธ๋“œ์˜ ์ด์ „ ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ๊ฐ€ ์ œ๊ฑฐํ•  ๋…ธ๋“œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์„ค์ •ํ•˜๋ฉด ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ์ž์‹ ์˜ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ƒ๋Œ€์ ์ธ ์ˆœ์„œ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฐฐ์—ด

  • ์žฅ์ : ํŠน์ • ์œ„์น˜์˜ ์ž๋ฃŒ ํƒ์ƒ‰์ด ์œ ๋ฆฌ
  • ๋‹จ์ : ์ž๋ฃŒ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ์—์„œ ํšจ์œจ์ด ๋‚ฎ์Œ

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ

  • ์ž๋ฃŒ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์œ ๋ฆฌ
  • ํŠน์ • ์œ„์น˜์˜ ์ž๋ฃŒ ํƒ์ƒ‰์ด ๋ฒˆ๊ฑฐ๋กœ์›€

์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์— ๋ช…์‹œ๋œ ํ‘œํ˜„ ๋ฐ ์—ฐ์‚ฐ ๋ฐฉ๋ฒ•์„ ๋ช…์‹œํ•œ๋‹ค.
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์˜ˆ๋กœ ๋“ค๋ฉด, ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์€ ์ธํ„ฐํŽ˜์ด์Šค, ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ํด๋ž˜์Šค๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค๋ž€?

๊ฐ์ฒด์ง€ํ–ฅ ๊ตฌ์กฐ์—์„œ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์„ค๊ณ„์šฉ ํด๋ž˜์Šค

๊ตฌํ˜„ ๋ถ€๋ถ„์ด ๋น„์–ด์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ผ๊ณ  ํ•˜๋ฉฐ, ์ƒ์† ๋ฐ›๋Š” ํด๋ž˜์Šค์—์„œ ์ด๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

์ฆ‰, '๋ฆฌ์ŠคํŠธ'๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๋ฅผ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๋ผ๋Š” ๋ช…์„ธ๋งŒ ์ฃผ์–ด์ง€๊ณ ,
์‹ค์ œ ๋™์ž‘ ๋ถ€๋ถ„์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์†๋ฐ›์€ ๋ฐฐ์—ด ํด๋ž˜์Šค, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

Python์˜ ์ธํ„ฐํŽ˜์ด์Šค ์˜ˆ

class MyInterface(metaclass=Xmeta): # ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ฉ”ํƒ€ํด๋ž˜์Šค ์ •์˜
	@abstractmethod # ์ถ”์ƒ ๋ฉ”์„œ๋“œ์ž„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์ฝ”๋ ˆ์ด์…˜
    def func() :
    	pass

Java ๋“ฑ ๋‹ค๋ฅธ ๊ฐ์ฒด์ง€ํ–ฅํ˜• ์–ธ์–ด์™€๋Š” ๋‹ฌ๋ฆฌ Python์—์„œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ธฐ๋Šฅ์„ ์ง์ ‘ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
๋”ฐ๋ผ์„œ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

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

์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ตฌํ˜„ ์˜ˆ์‹œ

import queue
q = queue.Queue()

ํŒŒ์ด์ฌ์˜ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘, queue๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•œ Queueํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค.
ํ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ž๋ฃŒ ์ €์žฅ ๋ฐ ์—ฐ์‚ฐ ๋ฐฉ๋ฒ•์„ ๊ฐ–์ถ”๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค์ด๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋ž€? : ๋ฆฌ์ŠคํŠธ,ํŠœํ”Œ, ๋”•์…”๋„ˆ๋ฆฌ ๋“ฑ์˜ ํ•˜๋‚˜ ์ด์ƒ์˜ ์š”์†Œ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•์ด๋‹ค.
๋‚ด๋ถ€์ ์œผ๋กœ Container ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ sub class์— ํ•ด๋‹นํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ตœ๋Œ“๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ž‘์—…์„ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค์Œ์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

  1. ์ •์ˆ˜๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ์ถ”๊ฐ€
  2. ์ •์ˆ˜๋ฅผ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ œ๊ฑฐ
  3. ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ ์ •์ˆ˜ ์ค‘ ์ตœ๋Œ“๊ฐ’ ๋ฐ˜ํ™˜

์ž๋ฃŒ๊ตฌ์กฐ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ

์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ข‹์€ ํ•ด๋ฒ•์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ๋ช‡๊ฐ€์ง€ ๊ธฐ์ค€์€

  • ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•œ์ง€ (์œ ์ง€๋ณด์ˆ˜/ํ•ด์„ ์šฉ์ด)
  • ์–ผ๋งˆ๋‚˜ ๋น ๋ฅธ์ง€ (์‹œ๊ฐ„ ํšจ์œจ)
  • ๋ฆฌ์†Œ์Šค๋ฅผ ์–ผ๋งˆ๋‚˜ ์ฐจ์ง€ํ•˜๋Š” ์ง€ (๊ณต๊ฐ„/๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ)
  • ๊ตฌํ˜„ ์‹œ๊ฐ„์ด ์งง์€๊ฐ€ (์‹œ๊ฐ„์˜ ๊ฒฝ์ œ์„ฑ)

    ์–ผ๋งˆ๋‚˜ ๋น ๋ฅธ๊ฐ€

    ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น์˜ ์ˆ˜๊ฐ€ ์ ์„์ˆ˜๋ก ์‹œ๊ฐ„์ด ๋œ ๊ฑธ๋ฆฐ๋‹ค.
     sum = 0
     for i in range(30):
     	sum = sum + 1
    sum = 0
    for i in range(300000):
    	sum = sum + 1

    ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ์•„๋ž˜ ์ฝ”๋“œ ๋ณด๋‹ค ์ ์€ ์ˆ˜๋กœ ๋ฐ˜๋ณตํ•˜์—ฌ, ์‹œ๊ฐ„์ด ๋œ ๊ฑธ๋ฆฐ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„

์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ •๋Ÿ‰ํ™”ํ•˜์—ฌ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•
์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง€๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ(Big O notation)์— ๋Œ€ํ•œ ์†Œ์š”์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์š”์†Œ n๊ฐœ๋ฅผ ๋ชจ๋‘ ์™ผ์ชฝ์œผ๋กœ๋งŒ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ตœ์•…์˜ ๊ฒฝ์šฐ์ด๋‹ค. ์š”์†Œ์˜ ์ˆ˜๊ฐ€ n๊ฐœ๋ผ๋ฉด,
* (n(n+1))/2 ์˜ ์‹œ๊ฐ„๋ณต์žก๋„์ด๋ฉฐ, ์ตœ์•…์˜ ๊ฒฝ์šฐ์ด๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์š”์†Œ n๊ฐœ๋ฅผ ๋ชจ๋‘ ์™ผ์ชฝ์œผ๋กœ ์ƒ์ž…ํ•˜๋ฉด ์ด์ „ ๋…ธ๋“œ ์•ž์— n๋ฒˆ ๋งŒํผ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ์—ฐ๊ฒฐ๋งŒ ํ•ด์ฃผ๋ฉด ๋˜๋ฏ€๋กœ, O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, ์ด ๋•Œ๋ฌธ์— ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถ€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์— ๋”ฐ๋ผ ํŠน์„ฑ๊ณผ ๋™์ž‘๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชฉ์ ์„ ๊ฐ€์žฅ ํšจ์œจ์ ์œผ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ํ™œ์šฉ

  1. ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•œ๋‹ค. (์–ด๋–ค ์ž๋ฃŒ๋ฅผ ๋‹ด์„์ง€, ์ž๋ฃŒ์— ์–ด๋–ค ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ์ง€ ํŒŒ์•…)
  2. ์ž๋ฃŒ๊ตฌ์กฐ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ํŒŒ์•…. (์ž๋ฃŒ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ์ง€ ํŒŒ์•…)
  3. ๋ฌธ์ œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ์‚ฌ์šฉํ•œ๋‹ค. (๋ชฉ์ ์— ๋งž๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ)

์ž๋ฃŒ๋ฅผ ์ž˜ ์ €์žฅํ•˜๋Š” ๋‹ค๋Š” ๊ฒƒ์€?

๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์˜๋„์— ๋งž๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ, ํšจ์œจ์ ์ธ ์„ฑ๋Šฅ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

profile
์‚ฌ์šฉ์ž์˜ ํŽธ์˜๋ฅผ ๋” ์ƒ๊ฐํ•˜๊ณ  ํŽธ์•ˆํ•œ UI/UX ๊ฐœ๋ฐœ์„ ๊ฟˆ๊พธ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ง€๋ง์ƒ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€