[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ •๋ ฌ (ํ€ต ์ •๋ ฌ, ํ•ฉ๋ณ‘ ์ •๋ ฌ)
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 8. 25. 22:16

ํ€ต ์ •๋ ฌ ๊ฐœ๋… ํ€ต ์ •๋ ฌ์˜ ์„ธ๋ถ€๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. pivot์ด๋ผ๋Š” ์š”์†Œ๋ฅผ ์„ ํƒํ•œ ํ›„, pivot์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์—๋Š” pivot๋ณด๋‹ค ์ž‘์€ ์š”์†Œ๋“ค์„ ๋†“๊ณ  ์˜ค๋ฅธ์ชฝ์—๋Š” pivot๋ณด๋‹ค ํฐ ์š”์†Œ๋“ค์„ ๋†“๋Š”๋‹ค. ์ดํ›„ ์ˆœํ™˜ํ˜ธ์ถœ์„ ์ด์šฉํ•˜์—ฌ ์žฌ๊ท€์ ์œผ๋กœ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ถ„๋ฅ˜ํ•ด๋‘” ์š”์†Œ๋“ค์— ๋Œ€ํ•ด ์ „๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์€ ์˜ค๋ฅธ์ชฝ ์š”์†Œ๋“ค์— ๋Œ€ํ•ด ์ˆœํ™˜ํ˜ธ์ถœํ•œ ๋ชจ์Šต์ด๋‹ค. ๋ถ„ํ• ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋‹ค๋ณด๋ฉด ์ตœ์†Œํ•œ์˜ ์š”์†Œ๋กœ ๋‚˜๋ˆ„์–ด์ง€๊ณ  ์ดํ›„ ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐํ•ฉ์„ ์ง„ํ–‰ํ•œ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์ƒ‰์ด ์น ํ•ด์ ธ์žˆ๋Š” ์š”์†Œ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ํ•ฉ์น˜๋ฉด ๋œ๋‹ค. ํ€ต ์ •๋ ฌ์€ ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. pivot์œผ๋กœ 2๊ฐœ์˜ ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ๋ถ„ํ• (Divide) ๊ณผ์ •๊ณผ ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ์ •๋ณต(Conquer) ๊ณผ์ •๊ณผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ํ•ฉ..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ •๋ ฌ (์„ ํƒ ์ •๋ ฌ, ๋ฒ„๋ธ” ์ •๋ ฌ, ์‚ฝ์ž… ์ •๋ ฌ)
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 8. 16. 19:52

์„ ํƒ ์ •๋ ฌ ๊ฐœ๋… max, min ์ •๋ ฌ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ ์›์†Œ๊นŒ์ง€ ํ›‘์œผ๋ฉด์„œ ์ตœ์†Œ๋‚˜ ์ตœ๋Œ€๋ฅผ ์ฐพ์•„์„œ ๋ฆฌ์ŠคํŠธ์˜ ์ฒ˜์Œ์ด๋‚˜ ๋์— ๋„ฃ๊ณ  ํ•ด๋‹น ์›์†Œ๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ์›์†Œ์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ •๋ ฌ์„ ์‹œํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ฌด์ž‘์œ„๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํƒ์ƒ‰ํ•œ ํ›„, ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ์™€ ๊ตํ™˜ํ•œ๋‹ค. ๊ทธ ํ›„ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ œ์™ธํ•œ ์ฑ„๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•œ ํ›„, ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ์™€ ๊ตํ™˜ํ•œ๋‹ค. ๊ตฌํ˜„ ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. (min ์ •๋ ฌ) for i=0 to n: a[i]๋ถ€ํ„ฐ a[n-1]๊นŒ์ง€ ์ฐจ๋ก€๋กœ ๋น„๊ตํ•˜์—ฌ ์ตœ์†Œ๊ฐ’์ด ์žˆ๋Š” a[j]๋ฅผ ์ฐพ๋Š”๋‹ค. a[i]์™€ a[j]๋ฅผ ๋ฐ”๊พผ๋‹ค. (max ์ •๋ ฌ) for i=0 to n: a[0]๋ถ€ํ„ฐ a[n-i-1]๊นŒ์ง€ ์ฐจ๋ก€๋กœ ๋น„๊ตํ•˜์—ฌ ์ตœ๋Œ€๊ฐ’์ด ์žˆ๋Š” ..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ •๋ ฌ (๊ฐœ์š”)
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 8. 16. 19:48

์ •๋ ฌ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋“ค์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ์ด๋ฅผ ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ '์ •๋ ฌ'์ด๋‹ค. ๋ณดํ†ต ์ปดํ“จํ„ฐ์—์„œ๋Š” ํƒ์ƒ‰์„ ์œ„ํ•ด์„œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ํƒ์ƒ‰์€ ์ •๋ ฌ์„ ํ†ตํ•ด ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๊ฐ•๋ ฅํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์ง€๋งŒ, ํ•œ ๋ฒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•ด๋‘๋ฉด ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์ด์ง„ ํƒ์ƒ‰์ด๋ผ๋Š” ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ช‡ ๋ฒˆ์ด๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์šฉํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ์ฃผ์–ด์ง„ ๋ฌด์ž‘์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์— ๋งŽ์€ ์—ฐ๊ตฌ์ž๋“ค์ด ๋ฐฉ๋ฒ•์„ ๋‚ด๋†“์•˜๋Š”๋ฐ, ์•ž์œผ๋กœ ์„ค๋ช…ํ•  6๊ฐœ์˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๊ทธ ์™ธ์—๋„ ๋งŽ์€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•œ๋‹ค. ๋ชจ๋“  ์ •๋ ฌ์˜ ์„ค๋ช…์— ์•ž์„œ์„œ ์˜ˆ์ œ๋กœ ์„ค๋ช…ํ•  ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ฌด์ž‘์œ„๋กœ ๋ฐฐ์น˜๋˜์–ด์žˆ๋Š” 1~7์˜ ๋ฐ์ดํ„ฐ์ด๋‹ค. ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๋น„๊ต + ์ด๋™์œผ๋กœ ์ธก์ •ํ•œ๋‹ค. ํŠน์„ฑ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์—ฌ๋Ÿฌ ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋‚˜๋‰  ์ˆ˜ ์žˆ๋‹ค. ์‹œ๊ฐ„ ๋ณต..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์žฌ๊ท€ํ˜ธ์ถœ (๋™์  ๊ณ„ํš๋ฒ•)
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 8. 9. 20:26

๐Ÿ‘๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ Dynamic Programming ์ฆ‰, DP๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฒ•์ด๋‹ค. ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ์ ํ™”์‹์œผ๋กœ ๋งŒ๋“ค์–ด ๋ถ„ํ•  ์ •๋ณตํ•  ๋•Œ, ๋ฐ˜๋ณต๋ฌธ ๋˜๋Š” ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด ๊ณผ์ •์—์„œ ๊ณ„์‚ฐ์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ €์žฅํ•ด๋‘์–ด ์ค‘๋ณต๋˜๋Š” ๊ณ„์‚ฐ์„ ํ•˜์ง€ ์•Š๋„๋ก ๋งŒ๋“ค์–ด์ค€๋‹ค. ์ด๋Š” ์ ํ™”์‹ ์ด๋ ‡๊ฒŒ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ €์žฅํ•ด๋‘๋Š” ๊ฒƒ์„ ๋ฉ”๋ชจ์ด์ œ์ด์…˜์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ๋ณดํ†ต ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค. DP ๊ณผ์ • ์ „์ฒด ๋ฌธ์ œ๋ฅผ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‹จ์ˆœํ™”ํ•œ๋‹ค. 1๋ฒˆ์˜ ๊ณผ์ •์—์„œ ์ ํ™”์‹์„ ๋„์ถœํ•œ๋‹ค. ์ ํ™”์‹์„ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด๋กœ ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•œ๋‹ค. bottom-up top-down ์—†๋‹ค๋ฉด ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฉ”๋ชจ์ด์ œ์ด์…˜ํ•œ๋‹ค. ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋ฐฉ์‹์€ ๋ณดํ†ต ๋ฐฐ์—ด์ด๋‹ค. ์ „์ฒด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. ๋Œ€ํ‘œ ๋ฌธ์ œ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ๊ตฌํ•˜๊ธฐ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์žฌ๊ท€ํ˜ธ์ถœ (์™„์ „ํƒ์ƒ‰)
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 31. 09:51

์žฌ๊ท€ํ˜ธ์ถœ ์žฌ๊ท€ํ•จ์ˆ˜๋ž€ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ž๊ธฐ ์ž์‹ ์„ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ ๋ฐ˜๋ณต๋˜๋Š” ์ž‘์—…๋“ค์ด ๋Œ€ํ•ด์„œ๋Š” ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ํ‘œํ˜„ํ•œ๋‹ค. ๊ธฐ์ € ์‚ฌ๋ก€๋ž€ ๋” ์ด์ƒ ์ชผ๊ฐœ์ง€์ง€ ์•Š๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ž‘์—…์œผ๋กœ, ์ด์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ๋Š” ์žฌ๊ท€ํ˜ธ์ถœ์„ ๋ฉˆ์ถ”๊ณ  ๋‹ต์„ ๊ณง์žฅ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ๊ธฐ์ € ์‚ฌ๋ก€๋ฅผ ์ •ํ•  ๋•Œ๋Š” ๋ชจ๋“  ์‚ฌ๋ก€์˜ ๋‹ต์ด ๊ธฐ์ € ์‚ฌ๋ก€๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ณ„์‚ฐ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผํ•œ๋‹ค. ์™„์ „ ํƒ์ƒ‰ (== Brute Force, Exhaustive search) ์™„์ „ํƒ์ƒ‰์€ ์ปดํ“จํ„ฐ์˜ ์—ฐ์‚ฐ๋Šฅ๋ ฅ์„ ์ด์šฉํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋‚˜์—ดํ•˜๋ฉด์„œ ๋‹ต์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ž…๋ ฅ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์„ ๋•Œ ์ ์ ˆํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ฉฐ ๋” ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ธฐ๋ฐ˜์ด ๋œ๋‹ค. ๋‹ต์„ ๋ฌด์กฐ๊ฑด ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์ฐพ๋Š”๋ฐ์— ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ๋น„ํŠธ์กฐ์ž‘ (๋น„ํŠธ๋งˆ์Šคํฌ, ์—ฐ์‚ฐ, ์ฝ”๋“œ ๊ตฌํ˜„)
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 31. 09:45

๋น„ํŠธ ์กฐ์ž‘ ๊ฐœ๋… ๋น„ํŠธ(bit)๋ž€ 0๊ณผ 1์˜ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋‹จ์œ„์ด๋‹ค. 4bit๋ฅผ ๋ชจ์€ ๋‹จ์œ„๋ฅผ ๋‹ˆ๋ธ”(nibble)์ด๋ผ ๋ถ€๋ฅด๊ณ , 8bit๋ฅผ ๋ชจ์€ ๋‹จ์œ„๋ฅผ ๋ฐ”์ดํŠธ(byte)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 2byte๋ฅผ ๋ชจ์€ ๋‹จ์œ„๋Š” ์ผ๋ถ€ ์ „์žํ†ต์‹ ๊ธฐ๊ธฐ์—์„œ ์›Œ๋“œ(word)๋ผ๊ณ  ํ•œ๋‹ค. ๊ตฌํ˜„ C++์—์„œ๋Š” ๋น„ํŠธ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ ์ด๋ผ๋Š” ํ—ค๋”๋ฅผ ํฌํ•จํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฐ์‚ฐ C++์—์„œ ๋น„ํŠธ์—ฐ์‚ฐ๋“ค์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐœ๋… ๊ณต๋ถ€ ์ธก๋ฉด์—์„œ ๊ทธ๋ƒฅ ๊ตฌํ˜„๋„ ํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ๋ฒ•๋„ ์ตํ˜€๋‘๋ คํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด 1byte ๋‹จ์œ„๋กœ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, bit ๋‹จ์œ„์˜ ์ž๋ฃŒํ˜•์€ ์—†๋‹ค. ๋‹ค๋งŒ bool ํ˜•์€ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ 1byte๋ฅผ ์ฐจ์ง€ํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•œ ๊ฐ’์ด true ํ˜น์€ false ๋ฐ–์— ์—†์œผ๋ฏ€๋กœ ์ด๋ฅผ ์ด์šฉ..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ๊ตฌ์กฐ์ฒด
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 28. 14:22

๊ตฌ์กฐ์ฒด ๊ตฌ์กฐ์ฒด๋Š” ๋ฐฐ์—ด๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์˜ ๋ณ€์ˆ˜๋“ค์„ ๋ชจ์•„์„œ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ํ‘œํ˜„ํ•˜๋Š” ์ž๋ฃŒํ˜•์ด๋‹ค. ์šฉ๋„ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋‚˜ ๊ทธ๋ž˜ํ”„์—์„œ ๋…ธ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ, ๋ฐ์ดํ„ฐ์™€ ํฌ์ธํ„ฐ ๋ถ€๋ถ„์ด ์กด์žฌํ•œ๋‹ค. ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์™€ ํฌ์ธํ„ฐ ๋ถ€๋ถ„์„ ๊ฐ๊ฐ ๊ตฌ์„ฑํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ๋งŒ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ, ํฌ์ธํ„ฐ๋Š” ํ•ด๋‹น ๊ตฌ์กฐ์ฒด์˜ ํฌ์ธํ„ฐํ˜•์ด๋ฏ€๋กœ ์ด ๊ตฌ์กฐ์ฒด๋Š” ์ž์ฒด ์ฐธ์กฐ ๊ตฌ์กฐ์ฒด๊ฐ€ ๋œ๋‹ค. C++ struct Node { int value; Node* pointer; // ์ž์ฒด ์ฐธ์กฐ ๊ตฌ์กฐ์ฒด }; int main() { Node A; // ๊ตฌ์กฐ์ฒด ์„ ์–ธ A.value = 4; Node* Ap = A.pointer; // . ์—ฐ์‚ฐ์ž๋กœ ์ ‘๊ทผ int Avalue = A.value; Ap = A; Avalue = Ap->value; // ํฌ์ธํ„ฐ๋กœ ..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ํž™
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 28. 14:21

ํž™ ์šฉ๋„ ๊ตฌํ˜„ ์ข…๋ฅ˜ ์—ฐ์‚ฐ ์ •๋ ฌ ํž™ ํž™์€ ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์ธ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. partial-ordering (๋ถ€๋ถ„ ์ •๋ ฌ)์„ ๋งŒ์กฑํ•˜๋Š” left-complete binary tree (์ขŒ์ธก ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ) ์ด๋‹ค. ๋ถ€๋ถ„ ์ •๋ ฌ์„ ๋งŒ์กฑํ•œ๋‹ค๋Š” ๋ง์€ '๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์ž์‹๋…ธ๋“œ' ๊ฐ„์—๋Š” ํŠน์ • ๋Œ€์†Œ๊ด€๊ณ„ ์„ฑ๋ฆฝํ•˜์ง€๋งŒ, 'ํ˜•์ œ๋…ธ๋“œ'๊ฐ„์—๋Š” ํ•ด๋‹น ๋Œ€์†Œ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์—์„œ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ํž™ ํŠธ๋ฆฌ์—์„œ๋Š” ํ—ˆ์šฉํ•œ๋‹ค. ์šฉ๋„ ํž™์€ ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์ธ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ ์ค‘ ํ•˜๋‚˜๊ฐ€ O(n)์ผ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ํ•˜์ง€๋งŒ ํž™์„ ์ด์šฉํ•˜๋ฉด ๊ฐ€์žฅ ํฐ ๊ฐ’์ด๋‚˜ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๋‘˜ ๋‹ค O(logn)๋งŒ์— ๋น ..