30_Oct_2021 ๐Ÿฐ ์—˜๋ฆฌ์Šค AI ํŠธ๋ž™ TIL: ์žฌ๊ท€ํ˜ธ์ถœ์„ ์ด์šฉํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ

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

Alexander Yoo์˜ Computer Science

๋ชฉ๋ก ๋ณด๊ธฐ
2/3

์žฌ๊ท€ํ•จ์ˆ˜

์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋””์ž์ธ ํ•˜๊ธฐ ์œ„ํ•œ 3 ๋‹จ๊ณ„

1) ํ•จ์ˆ˜์˜ ์ •์˜๋ฅผ ๋ช…ํ™•ํžˆ ํ•œ๋‹ค
2) ๊ธฐ์ € ์กฐ๊ฑด์—์„œ ํ•จ์ˆ˜๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๊ฒŒ ์ž‘์„ฑํ•œ๋‹ค
3) ํ•จ์ˆ˜๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•œ๋‹ค.

์–ด๋–ค ๋ฌธ์ œ๋“  ์ œ์ผ ์ฒซ ๋ฒˆ์งธ๋กœ ์‹œ๋„ํ•ด์•ผ ํ•  ๋ฐฉ๋ฒ•์€ ๋ฌด์กฐ๊ฑด ์™„์ „ํƒ์ƒ‰์ด๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์™„์ „ํƒ์ƒ‰์˜ ๊ฒฝ์šฐ, ํƒ์ƒ‰๋ฒ”์œ„๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋ถˆ๋ฆฌํ•˜๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ๋ผ๋ฉด ์ด์ง„ํƒ์ƒ‰์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ค‘๊ฐ„๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’๊ณผ์˜ ํฌ๊ธฐ ๋น„๊ต๋ฅผ ํ•œ๋‹ค.
    ์ฐพ๋Š” ๊ฐ’์„ ํƒ์ƒ‰ํ•  ๋•Œ ๊นŒ์ง€ ๋ฒ”์œ„๋ฅผ ์ง€์ˆ˜๋กœ๊ทธ ๋งŒํผ ์ค„์—ฌ๋‚˜๊ฐ€๋ฏ€๋กœ ์ตœ์•…์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(logN)์ด๋‹ค.

๋ถ„ํ• ์ •๋ณต๋ฒ•

๋ฌธ์ œ๋ฅผ ์†Œ๋ฌธ์ œ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๊ฐ๊ฐ์˜ ์†Œ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ, ์†Œ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ์ด์šฉํ•ด ์ „์ฒด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

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

ํ•ฉ๋ณ‘ ์ •๋ ฌ

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

์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฐฐ์—ด arr์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž

arr = [3,5,7,2,5,9,13,11,24,11,24,11,23,1,4,5,3,2]

๋จผ์ € ์ด ๋ฆฌ์ŠคํŠธ๋ฅผ 2 ๋ถ„ํ• ํ•œ๋‹ค.

arr1 = [2,3,5,5,7,9,11,13]
arr2 = [1,2,3,4,5,11,23,24]
#์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‚˜๋ˆˆ ๋ฆฌ์ŠคํŠธ๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค.

์ด ๋‘ ๋ฐฐ์—ด์„ ๋‹ค์‹œ ํ•ฉ์น˜๋ฉด ์ •๋ ฌ๋œ ์ „์ฒด ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
ํ•ฉ์น˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ ๋ฆฌ์ŠคํŠธ์˜ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋น„๊ตํ•œ๋‹ค.

๋‘ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ๋” ์ž‘์€ ๊ฐ’์„ ๋นผ์„œ ์ƒˆ๋กœ ๋งŒ๋“  ๋นˆ ์ „์ฒด ๋ฐฐ์—ด์— ๋„ฃ์–ด์ค€๋‹ค.

ํ•ฉ๋ณ‘์ •๋ ฌ์˜ ์‹œ๊ฐ„๋ณต์žก๋„

n๊ฐœ์˜ ์š”์†Œ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋ฐ ๋“œ๋Š” ์‹œ๊ฐ„์€ = T(n)์ด๋‹ค.
์—ฌ๊ธฐ์„œ T(n)์€ ๋‘˜๋กœ ๋‚˜๋ˆˆ ๋‘ ๋ฐฐ์—ด T(N/2) + T(N/2) ๋ฅผ ์ •๋ ฌํ•˜๋Š” ์ด ์‹œ๊ฐ„์ด๋‹ค.

์—ฌ๊ธฐ์— ์™ผ์ชฝ ๋ฐฐ์—ด๊ณผ ์˜ค๋ฅธ์ชฝ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ „๋ถ€ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์—
T(N) = T(N/2) + T(N/2) + O(N) ์ด๋‹ค. N์ด 1์ด ๋ ๋•Œ๊นŒ์ง€ 2๋กœ ๋‚˜๋ˆ„๋Š” ์‹œ๊ฐ„์€ logN์ด๋‹ค.

์ด๊ฒƒ์„ ๋‹ค์‹œ ํ•ฉ์น˜๋Š” ๋ฐ์— O(N)์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๊ณ , ํ•ด๋‹น ์ž‘์—…์„ logN ๋ฒˆ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ •๋ ฌ์‹œ๊ฐ„์€ O(NlogN)์ด ๋œ๋‹ค.

arr = [2,1,-2,5,-10,3,2,5,-3,7,9,-10]

๋ฆฌ์ŠคํŠธ๋ฅผ ๋‘˜๋กœ ๋‚˜๋ˆ ์„œ ์—ฐ์†๋ถ€๋ถ„ ์ตœ๋Œ€ํ•ฉ์„ ์ฐพ์•„๋ณด๋ฉด, [2,1,-2,5] = 6, [2,5,-3,7,9] = 20์ด ๋‚˜์˜จ๋‹ค. ๋˜ํ•œ ์ „์ฒด ๋ฐฐ์—ด์—์„œ์˜ ์—ฐ์†์ตœ๋Œ€ํ•ฉ์„ ์ฐพ์•„๋ณด๋ฉด, [3,2,5] = 10์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์ž๋ฅธ ์ง€์ ์„ ํฌํ•จํ•˜๋Š” ์—ฐ์†๋ถ€๋ถ„์ตœ๋Œ€ํ•ฉ์€, ์ž๋ฅธ ์ง€์ ์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์œ„์˜ ๋ฐฐ์—ด์—์„œ ์ž๋ฅธ ์ง€์ ์˜ ๊ธฐ์ค€์ด ๋˜๋Š” ์š”์†Œ๋Š” 3(์™ผ์ชฝ) 2(์˜ค๋ฅธ์ชฝ)์ด๋‹ค.

์ด์ œ ๊ฐ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ธฐ์ค€์œผ๋กœ ๊ฐ ์—ฐ์†๋ถ€๋ถ„ ์ตœ๋Œ€ํ•ฉ์„ ๊ตฌํ•˜๋ฉด,
์™ผ์ชฝ ๋ฐฐ์—ด ๊ธฐ์ค€ [3] = 3 ์ด ๊ฐ€์žฅ ํฌ๊ณ , ์˜ค๋ฅธ์ชฝ ๋ฐฐ์—ด ๊ธฐ์ค€ [2,5,-3,7,9] = 20์œผ๋กœ ๊ฐ€์žฅ ํฌ๋‹ค.

ํƒ์š•๋ฒ• (Greedy)

์ˆœ๊ฐ„์˜ ์ตœ์ ์˜ ์„ ํƒ์ด ๊ถ๊ทน์ ์œผ๋กœ ์ตœ์ ์˜ ์„ ํƒ์ด๋‹ค. ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•๋„ ๋ฌธ์ œ ํ’€์ด์—๋Š” ์ถฉ๋ถ„ํ•˜๋‹ค.

์™„์ „ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋ฒ”์œ„๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์–ด๋งˆ์–ด๋งˆํ•˜๊ฒŒ ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„ํšจ์œจ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ํž˜๋“ค๋‹ค. ๋”ฐ๋ผ์„œ, ์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ํƒ์š•๋ฒ•์„ ์ด์šฉํ•˜๋ฉฐ ํšจ๊ณผ์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์š”์•ฝ

๊ทธ๋Ÿฌ๋‚˜, ํƒ์š•๋ฒ•์€ ์ˆœ๊ฐ„์˜ ์ตœ์„ ์˜ ์„ ํƒ์„ ํ•˜๋Š” ๊ฐ€์„ค์„ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์šฐ๋ฉฐ, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๋‹ค๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋ถ„ํ• ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์š”์•ฝ

๋ถ„ํ• ์ •๋ณต๋ฒ•์€ ์–ด๋ ต๋‹ค.

๋ถ„ํ• ์ •๋ณต๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ œ๋กœ๋Š”:
ํ•ฉ๋ณ‘์ •๋ ฌ, ํ€ต์ •๋ ฌ, ๊ฑฐ๋“ญ์ œ๊ณฑ ๊ตฌํ•˜๊ธฐ, ์—ฐ์† ๋ถ€๋ถ„ ์ตœ๋Œ€ํ•ฉ, ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋‘ ์  ์ฐพ๊ธฐ, ํžˆ์Šคํ† ๊ทธ๋žจ๋“ฑ์ด ์žˆ์—ˆ๋‹ค.

์ด ๋ฌธ์ œ์—์„œ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ ์€, ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋‚˜๋ˆ„๊ณ , ์ž‘์€ ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋ฉฐ, ํ•ด๊ฒฐํ•œ ์ž‘์€ ๋ฌธ์ œ๋ฅผ ๋˜ ์–ด๋–ป๊ฒŒ ํ•ฉ์ณ์„œ ๊ฒฐ๊ณผ๋ฅผ ๋‚จ๊ธธ ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ๋ฌธ์ œ์˜€๋‹ค.

์ด๋ฅผ ํ›ˆ๋ จํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ด€๋ จ ๋ฌธ์ œ๋“ค์„ ๋งŽ์ด ํ’€์–ด๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

์ฝ”๋”ฉ ๋Šฅ๋ ฅ๊ณผ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ์€ ๋‹ค๋ฅด๋‹ค

์ฝ”๋”ฉ๊ณผ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ์€ ๊ตฌ๋ณ„๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ์—๋Š” ํ‚ค๋ณด๋“œ๊ฐ€ ์•„๋‹Œ ์Šค์Šค๋กœ์˜ ๋…ผ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ๋…ธํŠธ์™€ ํŽœ์œผ๋กœ ํ’€์ด๋ฅผ ๋– ์˜ฌ๋ ค์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

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

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