๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

๊ธฐ์ˆ˜ ์ •๋ ฌ, Radix Sort

๊ธฐ์ˆ˜ ์ •๋ ฌ์€ ๊ณ„์ˆ˜ ์ •๋ ฌ(Counting Sort) ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋น„๊ต์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•„ ์กฐ๊ฑด์ด ๋งž๋Š” ์ƒํ™ฉ์—์„œ ๋น ๋ฅธ ์ •๋ ฌ ์†๋„๋ฅผ ๋ณด์žฅํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ „์ฒด์ ์ธ ์ปจ์…‰์€ ๋ฐ์ดํ„ฐ์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋‚ฎ์€ ์ž๋ฆฌ์ˆ˜์—์„œ๋ถ€ํ„ฐ ๊ฐ€์žฅ ํฐ ์ž๋ฆฌ์ˆ˜๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ์ด์œ  ๋•Œ๋ฌธ์— ์ž๋ฆฟ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ˆ˜์ •๋ ฌ๋กœ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

Algorithm Concept

๊ธฐ์ˆ˜ ์ •๋ ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ค‘ ๊ฐ€์žฅ ํฐ ์ž๋ฆฟ์ˆ˜๊ฐ€ 100์˜ ์ž๋ฆฌ๋ผ๊ณ  ํ•ด๋ณด์ž.

  1. ๊ฐ ๋ฐ์ดํ„ฐ๋“ค์˜ 1์˜ ์ž๋ฆฌ๋ฅผ ๋น„๊ตํ•ด์„œ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ผ๋ฆฌ ๋ชจ์€๋‹ค. 1์˜ ์ž๋ฆฌ๊ฐ€ ์ž‘์€ ๋ฐ์ดํ„ฐ๋“ค์ด ์•ž์— ์œ„์น˜ํ•˜๊ฒŒ ๋˜๊ณ  ํฐ ์ˆซ์ž๋“ค์ด ๋’ค์— ์œ„์น˜ํ•˜๊ฒŒ ๋œ๋‹ค.(์˜ค๋ฆ„์ฐจ์ˆœ ๊ธฐ์ค€)
  2. ์ด๋•Œ ๊ฐ™์€ ์ž๋ฆฟ์ˆ˜์— ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ์ž…๋ ฅ๋œ ์ˆœ์„œ(๋‚˜์—ด๋œ ์ˆœ์„œ)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์€๋‹ค.
  3. 2๋ฒˆ๊นŒ์ง€ ๊ณผ์ •์„ ๋งˆ์น˜๋ฉด 1์˜ ์ž๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ถ€ํ„ฐ ๊ฐ€์žฅ ํฐ ์ˆซ์ž ์ˆœ์œผ๋กœ ๋ฐ์ดํ„ฐ๋“ค์ด ์ •๋ ฌ๋œ๋‹ค.
  4. ์ด๋ฒˆ์—๋Š” 10์˜ ์ž๋ฆฌ๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ผ๋ฆฌ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‚˜์—ดํ•œ๋‹ค.
  5. 10๋ณด๋‹ค ์ž‘์€ ์ˆซ์ž๋“ค์€ ๋ฐฐ์—ด์— ์œ„์น˜ํ–ˆ๋˜ ์ˆœ์„œ๋Œ€๋กœ ์ƒˆ๋กœ์šด ์ •๋ ฌ์˜ ์ œ์ผ ์•ž์— ์œ„์น˜ํ•˜๊ฒŒ ๋œ๋‹ค.
  6. 1์ด๋ฒˆ์—๋Š” 100์˜ ์ž๋ฆฌ๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ผ๋ฆฌ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‚˜์—ดํ•œ๋‹ค.
  7. 100๋ณด๋‹ค ์ž‘์€ ์ˆซ์ž๋“ค์€ ๋ฐฐ์—ด์˜ ์ œ์ผ ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฑ„์šด๋‹ค.
  8. ๋ฐ์ดํ„ฐ๋“ค์˜ ์ตœ๋Œ€ ์ž๋ฆฟ์ˆ˜๊ฐ€ 100์˜ ์ž๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒํ•œ๋‹ค.

Let's dive into example!

์ด๊ฒŒ ์™œ ๋˜๋Š”๊ฑฐ์ง€? ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ์ด๊ฒŒ ์™œ ๋˜๋Š”์ง€ ์ง๊ด€์ ์œผ๋กœ ์™€๋‹ฟ๋Š”๋‹ค. ์˜ˆ์‹œ๋ฅผ ํ’€์–ด๋ณด์ž.

 

์กฐ๊ธˆ์€ ๊ทน๋‹จ์ ์ธ ๊ตฌ์„ฑ์ด์ง€๋งŒ ์œ„ ๋ฐฐ์—ด์„ ๊ธฐ์ˆ˜์ •๋ ฌ๋กœ ์ •๋ ฌํ•ด๋ณด์ž

Phase 1

๋จผ์ € ๊ฐ ๋ฐ์ดํ„ฐ๋“ค์„ 1์˜ ์ž๋ฆฌ๋ผ๋ฆฌ ๋น„๊ตํ•ด์„œ ์ •๋ ฌ์‹œํ‚จ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ค‘๊ฐ„๋‹จ๊ณ„ ์—ญํ• ์„ ํ•˜๋Š” ๋ฒ„ํ‚ท(ํ)์„ ๋งŒ๋“ค์–ด์„œ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ชจ์•„์ค€๋‹ค. ๊ฐ ๊ทธ๋ฆผ์—์„œ 10๊ณผ 100์€ 1์˜์ž๋ฆฌ ์ˆซ์ž๊ฐ€ 0์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•จ๊ป˜ ๋ชจ์•˜๊ณ , 10์ด 100๋ณด๋‹ค ๊ธฐ์กด ๋ฐฐ์—ด์—์„œ ์•ž์„  ์œ„์น˜์— ์œ„์น˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์•ž์— ์™”๋‹ค. ์ด์ œ 1์˜ ์ž๋ฆฌ์— ๋Œ€ํ•œ ์ •๋ ฌ์€ ๋๋‚ฌ๋‹ค.

Phase 2

1์˜ ์ž๋ฆฌ๊นŒ์ง€ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ๊ฐ€์ง€๊ณ  ์ด์ œ 10์˜ ์ž๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•ด๋ณด์ž. 5์™€ 8์€ 10์ž๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„ํ‚ท์˜ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ๋ชฐ์•„์ฃผ๊ณ  ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ๋งŒ๋“ค ๋•Œ๋Š” ๋“ค์–ด๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•ด์ค€๋‹ค.

Phase 3

๋งˆ์ง€๋ง‰ 100์˜ ์ž๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•ด๋ณด์ž. 100์„ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋“ค์€ 100์˜ ์ž๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋‘ ๋ฒ„ํ‚ท์˜ 0๋ฒˆ ์ธ๋ฑ์Šค๋กœ ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด๊ฐ„๋‹ค. ๊ทธ๋ฆฌ๊ณ  100์€ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ž๋ฆฌ์žก๊ฒŒ ๋œ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ๊บผ๋‚ด์„œ ๋ฐฐ์—ด์— ๋„ฃ์œผ๋ฉด ์ •๋ ฌ๋œ ๋ฐฐ์—ด์ด ์™„์„ฑ๋œ๋‹ค.

Algorithm Analysis

๊ธฐ์ˆ˜ ์ •๋ ฌ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ี•(dN) ์ด๋‹ค. N์€ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๊ณ  d๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ์ตœ๋Œ€ ์ž๋ฆฌ์ˆ˜์ด๋‹ค. ๊ธฐ์ˆ˜ ์ •๋ ฌ์€ ๋น„๊ต์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฒ„ํ‚ท์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋นผ๋Š” ์ž‘์—…(N)์„ ์ตœ๋Œ€ ์ž๋ฆฟ์ˆ˜(d)๋งŒํผ ๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์€ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ฒŒ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ธฐ์ˆ˜์ •๋ ฌ์€ ์•ˆ์ •์ •๋ ฌ ์ด๋‹ค. ์ •๋ ฌ ์ดํ›„์—๋„ ์ค‘๋ณต๋œ ๊ฐ’๋“ค์€ ์ž๋ฆฌ๊ฐ€ ๋’ค๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ธฐ์ˆ˜์ •๋ ฌ์€ ๋ฒ„ํ‚ท์ด๋ผ๋Š” ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์š”๊ตฌํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋” ํฐ ๋ฌธ์ œ๋Š” ๋ฒ„ํ‚ท์˜ ํฌ๊ธฐ๋ฅผ ๋ชจ๋“  ์ผ€์ด์Šค์— ๋งž๊ฒŒ ๋”ฑ ์ •์˜ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 10 ์ง„์ˆ˜์ธ ๋ฐ์ดํ„ฐ๋“ค์„ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 0~9 ๋ฅผ ์ €์žฅํ•  10๊ฐœ์˜ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜์ง€๋งŒ, ๋งŒ์•ฝ ์•ŒํŒŒ๋ฒณ์„ ์ •๋ ฌํ•œ๋‹ค๋ฉด ์ด ๊ธธ์ด๊ฐ€ 26์ธ ๋ฒ„ํ‚ท์ด ํ•„์š”ํ•˜๋‹ค.