career

๊ณ ๋Ÿ‰์ฃผ 12์ฃผ ์Šคํ„ฐ๋”” ์ปค๋ฆฌํ˜๋Ÿผ 0์ฃผ์ฐจ CS50 ์ˆ˜๊ฐ•

seulye 2022. 10. 13. 14:30

๋ชจ๋‘๋ฅผ ์œ„ํ•œ ์ปดํ“จํ„ฐ ๊ณผํ•™ (CS50 2019) ๊ฐ•์ขŒ์†Œ๊ฐœ : ๋ถ€์ŠคํŠธ์ฝ”์Šค (boostcourse.org)

 

๋ชจ๋‘๋ฅผ ์œ„ํ•œ ์ปดํ“จํ„ฐ ๊ณผํ•™ (CS50 2019)

๋ถ€์ŠคํŠธ์ฝ”์Šค ๋ฌด๋ฃŒ ๊ฐ•์˜

www.boostcourse.org

์ปด๊ณต ์ „๊ณต์ž๋ผ์„œ ๊ตณ์ด ์•ˆ ๋“ค์–ด๋„ ๋˜์ง€๋งŒ.. ์ดˆ์‹ฌ์„ ๋˜์ฐพ๊ณ ์ž ํ•˜๋Š” ๋งˆ์Œ์œผ๋กœ ๋“ค์–ด๋ณด์•˜๋‹ค. 

๊ทธ ์ค‘์—์„œ ์ •๋ฆฌํ•ด๋†“์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ๋ชจ์•„๋ด„!

 

 

๋น„ํŠธ

์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ปดํ“จํ„ฐ๋Š” ๋น„ํŠธ(bit)๋ผ๋Š” ์ธก์ • ๋‹จ์œ„๋ฅผ ์”๋‹ˆ๋‹ค. ๋น„ํŠธ๋Š” ์ด์ง„ ์ˆซ์ž๋ผ๋Š” ๋œป์„ ๊ฐ€์ง„ “binary digit”์˜ ์ค„์ž„๋ง์ด๋ฉฐ, 0๊ณผ 1, ๋‘ ๊ฐ€์ง€ ๊ฐ’๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ธก์ • ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. 

 

๋น„ํŠธ์—ด

๋ฐ”์ดํŠธ(byte)๋Š” ์—ฌ๋Ÿ ๊ฐœ์˜ ๋น„ํŠธ๊ฐ€ ๋ชจ์—ฌ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ฐ”์ดํŠธ์— ์—ฌ๋Ÿ ๊ฐœ์˜ ๋น„ํŠธ๊ฐ€ ์žˆ๊ณ , ๋น„ํŠธ ํ•˜๋‚˜๋Š” 0๊ณผ 1๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 2^8 = 256 ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ”์ดํŠธ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”์ดํŠธ๊ฐ€ ๋ชจ์ด๋ฉด ๋” ํฐ ๋‹จ์œ„๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ฌ๋กœ๋ฐ”์ดํŠธ๋Š” 1,000 ๋ฐ”์ดํŠธ, ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ๋Š” 1,000 ํ‚ฌ๋กœ๋ฐ”์ดํŠธ(100๋งŒ ๋ฐ”์ดํŠธ), ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ๋Š” 1,000 ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ(10์–ต ๋ฐ”์ดํŠธ)์ž…๋‹ˆ๋‹ค. ํ…Œ๋ผ๋ฐ”์ดํŠธ๋Š” 1,000 ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ(1์กฐ ๋ฐ”์ดํŠธ)์ด๋ฉฐ, ์‹ฌ์ง€์–ด ํŽ˜ํƒ€๋ฐ”์ดํŠธ์™€ ์—‘์‚ฌ๋ฐ”์ดํŠธ์™€ ๊ฐ™์€ ๋” ํฐ ๋‹จ์œ„๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

 

์•„์Šคํ‚ค์ฝ”๋“œ

 

๋ฐ์ดํ„ฐ ํƒ€์ž…

  • bool (1๋ฐ”์ดํŠธ) : ๋ถˆ๋ฆฌ์–ธ ํ‘œํ˜„, (์˜ˆ) True, False, 1, 0, yes, no
  • char (1๋ฐ”์ดํŠธ) : ๋ฌธ์ž ํ•˜๋‚˜ (์˜ˆ) 'a', 'Z', '?'
  • string: ๋ฌธ์ž์—ด
  • int (4๋ฐ”์ดํŠธ) : ํŠน์ • ํฌ๊ธฐ ๋˜๋Š” ํŠน์ • ๋น„ํŠธ๊นŒ์ง€์˜ ์ •์ˆ˜ (์˜ˆ) 5, 28, -3, 0
  • long (8๋ฐ”์ดํŠธ) : ๋” ํฐ ํฌ๊ธฐ์˜ ์ •์ˆ˜
  • float (4๋ฐ”์ดํŠธ): ๋ถ€๋™์†Œ์ˆ˜์ ์„ ๊ฐ–๋Š” ์‹ค์ˆ˜ (์˜ˆ) 3.14, 0.0, -28.56
  • double (8๋ฐ”์ดํŠธ) : ๋ถ€๋™์†Œ์ˆ˜์ ์„ ํฌํ•จํ•œ ๋” ํฐ ์‹ค์ˆ˜

 

ํ˜•์‹ ์ง€์ •์ž

  • %c : char
  • %f : float, double
  • %i : int
  • %li : long
  • %s : string

 

 

์ „์ฒ˜๋ฆฌ(Precompile)

์ปดํŒŒ์ผ์˜ ์ „์ฒด ๊ณผ์ •์€ ๋„ค ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ์ „์ฒ˜๋ฆฌ์ธ๋ฐ, ์ „์ฒ˜๋ฆฌ๊ธฐ์— ์˜ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. # ์œผ๋กœ ์‹œ์ž‘๋˜๋Š” C ์†Œ์Šค ์ฝ”๋“œ๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ์—๊ฒŒ ์‹ค์งˆ์ ์ธ ์ปดํŒŒ์ผ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ์ „์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹คํ–‰ํ•˜๋ผ๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, #include๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ์—๊ฒŒ ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํฌํ•จ์‹œํ‚ค๋ผ๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์Šค ์ฝ”๋“œ์— #include ์™€ ๊ฐ™์€ ์ค„์„ ํฌํ•จํ•˜๋ฉด, ์ „์ฒ˜๋ฆฌ๊ธฐ๋Š” ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์ด ํŒŒ์ผ์€ ์—ฌ์ „ํžˆ C ์†Œ์Šค ์ฝ”๋“œ ํ˜•ํƒœ์ด๋ฉฐ stdio.h ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด #include ๋ถ€๋ถ„์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

 

์ปดํŒŒ์ผ(Compile)

์ „์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ ์ „์ฒ˜๋ฆฌํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‚˜๋ฉด ๊ทธ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์ปดํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์€ C ์ฝ”๋“œ๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ผ๋Š” ์ €์ˆ˜์ค€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.

์–ด์…ˆ๋ธ”๋ฆฌ๋Š” C๋ณด๋‹ค ์—ฐ์‚ฐ์˜ ์ข…๋ฅ˜๊ฐ€ ํ›จ์”ฌ ์ ์ง€๋งŒ, ์—ฌ๋Ÿฌ ์—ฐ์‚ฐ๋“ค์ด ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉด C์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ๋“ค์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. C ์ฝ”๋“œ๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์คŒ์œผ๋กœ์จ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์™€ ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์šด ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ์ด๋ผ๋Š” ์šฉ์–ด๋Š” ์†Œ์Šค ์ฝ”๋“œ์—์„œ ์˜ค๋ธŒ์ ํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ „์ฒด ๊ณผ์ •์„ ํ†ตํ‹€์–ด ์ผ์ปซ๊ธฐ๋„ ํ•˜์ง€๋งŒ, ๊ตฌ์ฒด์ ์œผ๋กœ ์ „์ฒ˜๋ฆฌํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ๋‹จ๊ณ„๋ฅผ ๋งํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

 

์–ด์…ˆ๋ธ”(Assemble)

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

 

๋งํฌ(Link)

๋งŒ์•ฝ ํ”„๋กœ๊ทธ๋žจ์ด (math.h๋‚˜ cs50.h์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•ด) ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด ํ•˜๋‚˜์˜ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๋กœ ํ•ฉ์ณ์ ธ์•ผ ํ•œ๋‹ค๋ฉด ๋งํฌ๋ผ๋Š” ์ปดํŒŒ์ผ์˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ง์ปค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ ์ฝ”๋“œ ํŒŒ์ผ์„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ•˜๋‚˜์˜ ์˜ค๋ธŒ์ ํŠธ ์ฝ”๋“œ ํŒŒ์ผ๋กœ ํ•ฉ์ณ์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปดํŒŒ์ผ์„ ํ•˜๋Š” ๋™์•ˆ์— CS50 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งํฌํ•˜๋ฉด ์˜ค๋ธŒ์ ํŠธ ์ฝ”๋“œ๋Š” GetInt()๋‚˜ GetString() ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•  ์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฒ„๊ทธ์™€ ๋””๋ฒ„๊น…

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

 

 

์œ„์™€ ๊ฐ™์€ ๊ทธ๋ฆผ์„ ๊ณต์‹์œผ๋กœ ํ‘œ๊ธฐํ•œ ๊ฒƒ์ด Big O ํ‘œ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ O๋Š” “on the order of”์˜ ์•ฝ์ž๋กœ, ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด “~๋งŒํผ์˜ ์ •๋„๋กœ ์ปค์ง€๋Š”” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

O(n) ์€ n๋งŒํผ ์ปค์ง€๋Š” ๊ฒƒ์ด๋ฏ€๋กœ n์ด ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. O(n/2)๋„ ๊ฒฐ๊ตญ n์ด ๋งค์šฐ ์ปค์ง€๋ฉด 1/2์€ ํฐ ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง€๋ฏ€๋กœ O(n)์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ๋กœ ์•„๋ž˜ ๋ชฉ๋ก๊ณผ ๊ฐ™์€ Big O ํ‘œ๊ธฐ๊ฐ€ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • O(n^2)
  • O(n log n)
  • O(n) - ์„ ํ˜• ๊ฒ€์ƒ‰
  • O(log n) - ์ด์ง„ ๊ฒ€์ƒ‰
  • O(1)

 

Big O๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ์‹œ๊ฐ„์˜ ์ƒํ•œ์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋ผ๋ฉด, ๋ฐ˜๋Œ€๋กœ Big Ω๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ์‹œ๊ฐ„์˜ ํ•˜ํ•œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์„ ํ˜• ๊ฒ€์ƒ‰์—์„œ๋Š” n๊ฐœ์˜ ํ•ญ๋ชฉ์ด ์žˆ์„๋•Œ ์ตœ๋Œ€ n๋ฒˆ์˜ ๊ฒ€์ƒ‰์„ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ƒํ•œ์ด O(n)์ด ๋˜์ง€๋งŒ ์šด์ด ์ข‹๋‹ค๋ฉด ํ•œ ๋ฒˆ๋งŒ์— ๊ฒ€์ƒ‰์„ ๋๋‚ผ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ํ•˜ํ•œ์€ Ω(1)์ด ๋ฉ๋‹ˆ๋‹ค.

์—ญ์‹œ ์•„๋ž˜ ๋ชฉ๋ก๊ณผ ๊ฐ™์€ Big Ω ํ‘œ๊ธฐ๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • Ω(n^2)
  • Ω(n log n)
  • Ω(n) - ๋ฐฐ์—ด ์•ˆ์— ์กด์žฌํ•˜๋Š” ๊ฐ’์˜ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ
  • Ω(log n)
  • Ω(1) - ์„ ํ˜• ๊ฒ€์ƒ‰, ์ด์ง„ ๊ฒ€์ƒ‰

 

 

 

์„ ํ˜• ๊ฒ€์ƒ‰ O(n) / Ω(1)

 

๋ฒ„๋ธ” ์ •๋ ฌ O(n^2) / Ω(n^2), Ω(n)

์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฒ„๋ธ” ์ •๋ ฌ์ž…๋‹ˆ๋‹ค.

๋ฒ„๋ธ” ์ •๋ ฌ์€ ๋‘ ๊ฐœ์˜ ์ธ์ ‘ํ•œ ์ž๋ฃŒ ๊ฐ’์„ ๋น„๊ตํ•˜๋ฉด์„œ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ •๋ ฌ์ด ๋ชจ๋‘ ๋˜์–ด ์žˆ๋Š” ์ˆซ์ž ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค๋ฉด ๊ตํ™˜์ด ํ•˜๋‚˜๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ํ•˜ํ•œ์€  Ω(n)์ด ๋ฉ๋‹ˆ๋‹ค.

 

์„ ํƒ ์ •๋ ฌ O(n^2) / Ω(n^2)

์ •๋ ฌ์„ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ์„ ํƒ์ •๋ ฌ์„ ๋ฐฐ์—ด ์•ˆ์˜ ์ž๋ฃŒ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜(ํ˜น์€ ๊ฐ€์žฅ ํฐ ์ˆ˜)๋ฅผ ์ฐพ์•„ ์ฒซ ๋ฒˆ์งธ ์œ„์น˜(ํ˜น์€ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์œ„์น˜)์˜ ์ˆ˜์™€ ๊ตํ™˜ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์˜ ์ •๋ ฌ์ž…๋‹ˆ๋‹ค.

์„ ํƒ ์ •๋ ฌ์€ ๊ตํ™˜ ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐ˜๋ฉด ๊ฐ ์ž๋ฃŒ๋ฅผ ๋น„๊ตํ•˜๋Š” ํšŸ์ˆ˜๋Š” ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

๋ณ‘ํ•ฉ ์ •๋ ฌ O(n log n) / Ω(n log n)

์ „ํ™”๋ฒˆํ˜ธ๋ถ€์˜ ๋ถ„ํ•  ์ •๋ณต ํƒ์ƒ‰์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„์–ด๊ฐ„๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ณตํ†ต์ ์ด ์žˆ๋Š” ๋ฐฉ๋ฒ•์ธ ๋ณ‘ํ•ฉ ์ •๋ ฌ(ํ•ฉ๋ณ‘ ์ •๋ ฌ)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉ ์ •๋ ฌ์€ ์›์†Œ๊ฐ€ ํ•œ ๊ฐœ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„๋‹ค๊ฐ€ ๋‹ค์‹œ ํ•ฉ์ณ๋‚˜๊ฐ€๋ฉฐ ์ •๋ ฌ์„ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

       7 | 4 | 5 | 2 | 6 | 3 | 8 | 1 → ๊ฐ€์žฅ ์ž‘์€ ๋ถ€๋ถ„ (์ˆซ์ž 1๊ฐœ)์œผ๋กœ ๋‚˜๋ˆ ์ง„ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

4   7 | 2   5 | 3   6 | 1   8 → ์ˆซ์ž 1๊ฐœ์”ฉ์„ ์ •๋ ฌํ•˜์—ฌ ๋ณ‘ํ•ฉํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

2   4   5   7 | 1   3   6   8 → ์ˆซ์ž 2๊ฐœ์”ฉ์„ ์ •๋ ฌํ•˜์—ฌ ๋ณ‘ํ•ฉํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

1   2   3   4   5   6   7   8 → ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆซ์ž 4๊ฐœ์”ฉ์„ ์ •๋ ฌํ•˜์—ฌ ๋ณ‘ํ•ฉํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.