2021-03-20(Sat)

ํ•ญ๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-03-20(ํ† )

ํ•™์Šต ์‹œ๊ฐ„

11:00~24:00

ํ•™์Šต ๋ฒ”์œ„ ๋ฐ ์ฃผ์ œ

๋น…์˜ค, python

ํ•™์Šต ๋ชฉํ‘œ

๋น…์˜ค์™€ python์˜ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์„ ํŒŒ์•…ํ•œ๋‹ค.

๋™๋ฃŒ ํ•™์Šต ๋ฐฉ๋ฒ•

-

์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ’€๋˜ ์ค‘ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์• ๋งคํ•œ ์ง€์ ์ด ์žˆ์–ด์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ•™์Šต์„ ์ง„ํ–‰ํ•˜์˜€๋‹ค. ์ดํ›„ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต์˜ ํ•ด์‹œ, ์Šคํƒ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.

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

์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ„(์—ฐ์‚ฐ)์˜ ํšŸ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ '์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์ด ํŠธ๋ ˆ์ด๋“œ์˜คํ”„' ๊ด€๊ณ„์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ˆ˜ํ–‰์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ํ‰๊ฐ€๊ธฐ์ค€์œผ๋กœ ๋‘”๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„(Time Complexity): ์ˆ˜ํ–‰์‹œ๊ฐ„์— ํ•ด๋‹น

  • ๊ณต๊ฐ„ ๋ณต์žก๋„(Space Complexity): ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์— ํ•ด๋‹น

์œ„ ๋ณต์žก๋„๋“ค์€ ์ž…๋ ฅ์˜ ํฌ๊ธฐ๊ฐ€ ์ถฉ๋ถ„ํžˆ ํด ๋•Œ ์˜๋ฏธ์žˆ๋‹ค.

๋น…์˜ค

๋น…์˜ค(O, big-O)๋ž€ ์ž…๋ ฅ๊ฐ’์ด ๋ฌดํ•œ๋Œ€๋กœ ํ–ฅํ•  ๋•Œ ํ•จ์ˆ˜์˜ ์ƒํ•œ์„ ์„ค๋ช…ํ•˜๋Š” ์ˆ˜ํ•™์  ํ‘œ๊ธฐ ๋ฐฉ๋ฒ•์ด๋‹ค.

๋น…์˜ค๋Š” ๊ฐ€์žฅ ๋Šฆ๊ฒŒ ์‹คํ–‰๋  ๋•Œ, ์ฆ‰ ์ƒํ•œ(Upper Bound)์„ ์˜๋ฏธํ•œ๋‹ค. ์ด์™ธ์—๋„ ๊ฐ€์žฅ ๋นจ๋ฆฌ ์‹คํ–‰๋  ๋•Œ, ์ฆ‰ ํ•˜ํ•œ(Lower Bound)์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋น…์˜ค๋ฉ”๊ฐ€, ํ‰๊ท ์„ ์˜๋ฏธํ•˜๋Š” ๋น…์„ธํƒ€๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ณดํ†ต ํ‰๊ท ์ ์ธ ์‹œ๊ฐ„๋ณด๋‹ค๋Š” ์ƒํ•œ ์‹œ๊ฐ„์œผ๋กœ ๋‹จ์ˆœํ™”ํ•ด์„œ ์ฃผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

์ƒํ•œ์„ ์ตœ์•…์˜ ๊ฒฝ์šฐ์™€ ํ˜ผ๋™ํ•˜์ง€ ๋ง์ž. ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์€ ์ •ํ™•ํ•˜๊ฒŒ ์“ฐ๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๊ธธ๊ณ  ๋ณต์žกํ•œ ํ•จ์ˆ˜๋ฅผ '์ ๋‹นํžˆ ์ •ํ™•ํ•˜๊ฒŒ' ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ผ ๋ฟ, ์ตœ์•…์˜ ๊ฒฝ์šฐ/ํ‰๊ท ์ ์ธ ๊ฒฝ์šฐ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์™€๋Š” ์•„๋ฌด๋Ÿฐ ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ๊ฐœ๋…์ด๋ผ๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค. ์ตœ์„ ์˜ ๊ฒฝ์šฐ์—๋„ ์ƒํ•œ์ด ์กด์žฌํ•˜๊ณ , ์—ญ์‹œ ํ‰๊ท , ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ ์ƒํ•œ์ด ์กด์žฌํ•œ๋‹ค. ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์€ ์ฃผ์–ด์ง„(์ตœ์„ /์ตœ์•…/ํ‰๊ท ) ๊ฒฝ์šฐ์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์˜ ์ƒํ•œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๋ถ„ํ•  ์ƒํ™˜ ๋ถ„์„

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

์ž ์ด์ œ ํŒŒ์ด์ฌ ์—ฐ์‚ฐ๋“ค์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ํ™•์ธํ•ด๋ณด์ž.

๋ฆฌ์ŠคํŠธ

์—ฐ์‚ฐ

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

len(a)

O(1)

a[i]

O(1)

a[i:j]

O(j-i)

elem in a

O(n)

a.count(elem)

O(n)

a.index(elem)

O(n)

a.append(elem)

O(1)

a.pop()

O(1)

a.pop(0)

O(n)

del a[i]

O(n)

a.sort()

O(nlogn)

min(a), max(a)

O(n)

a.reverse()

O(n)

๋”•์…”๋„ˆ๋ฆฌ

์—ฐ์‚ฐ

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

len(a)

O(1)

a[key]

O(1)

a[key] = value

O(1)

key in a

O(1)

๋ฌผ๋ก  ์ตœ์•…์˜ ๊ฒฝ์šฐ์—” O(n)์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๊ฒŒ ์ฆ๊ฒ๋‹ค. ๊ทธ ๋™์•ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋Š๋ผ ๊พธ์ค€ํžˆ ํ•˜์ง€ ๋ชปํ–ˆ๋Š”๋ฐ ์ด์ œ๋Š” ์ •๋ง ๋งค์ผ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ๊ฒ ๋‹ค :) python ๋ฉ”์„œ๋“œ๋“ค์ด ๋„ˆ๋ฌด ํŽธํ•˜๊ณ  ๋‚ด๋ถ€ ๋™์ž‘๋„ ์˜ˆ์ธก์€ ๋˜์ง€๋งŒ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ •ํ™•ํžˆ ๊พ€๊ณ  ์žˆ๋Š” ๋Š๋‚Œ์ด ๋“ค์ง€ ์•Š์•˜๋‹ค. ์• ์ดˆ์— ์‹œ๊ฐ„ ๋ณต์žก๋„๋ž€ ๋ญ์ง€? ๋‚ด๊ฐ€ ์ •๋ง ์ œ๋Œ€๋กœ ๋‹ต๋ณ€ํ•  ์ˆ˜ ์žˆ๋‚˜? ํ•˜๋Š” ์˜๋ฌธ์ด ๋“ค์–ด์„œ ๋‹ค์‹œ ํ•™์Šตํ–ˆ๋Š”๋ฐ ๋งŒ์กฑ์Šค๋Ÿฝ๋‹ค. ์ด๋Ÿฐ์‹์œผ๋กœ ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์„ ๋‹ค์‹œ๊ธˆ ๋Œ์•„๋ณด๊ณ  ์ œ๋Œ€๋กœ ํ•™์Šตํ•ด ๋‚˜๊ฐ€์•ผ๊ฒ ๋‹ค.

๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

  • ๋””์ž์ธํŒจํ„ด ํ•™์Šต

Last updated