Greedy Algorithm & Priority Queue for Max Attendable Events

๐Ÿค– AI ์ถ”์ฒœ

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

๐Ÿ”– ์ฃผ์š” ํ‚ค์›Œ๋“œ

Greedy Algorithm & Priority Queue for Max Attendable Events

ํ•ต์‹ฌ ๊ธฐ์ˆ 

์ด ์ฝ˜ํ…์ธ ๋Š” ์ตœ๋Œ€ ์ฐธ์„ ๊ฐ€๋Šฅํ•œ ์ด๋ฒคํŠธ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ณ ์ „์ ์ธ ํƒ์š•์  ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm) ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ์‹์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ ์ด๋ฒคํŠธ์˜ ์ข…๋ฃŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ ํ(Min-Heap)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‹œ๊ฐ„ ์ œ์•ฝ ๋‚ด์—์„œ ์ตœ์ ์˜ ์ด๋ฒคํŠธ ์„ ํƒ์„ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์  ์„ธ๋ถ€์‚ฌํ•ญ

  • ๋ฌธ์ œ ์ •์˜: ๊ฐ ์ด๋ฒคํŠธ๋Š” ์‹œ์ž‘์ผ๊ณผ ์ข…๋ฃŒ์ผ์„ ๊ฐ€์ง€๋ฉฐ, ํ•˜๋ฃจ์— ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ๋งŒ ์ฐธ์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ์ด๋ฒคํŠธ ๋ชฉ๋ก์—์„œ ์ตœ๋Œ€ ์ฐธ์„ ๊ฐ€๋Šฅํ•œ ์ด๋ฒคํŠธ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.
  • ํƒ์š•์  ์ ‘๊ทผ ๋ฐฉ์‹: ๋งค์ผ ๊ฐ€๋Šฅํ•œ ์ด๋ฒคํŠธ ์ค‘์—์„œ ๊ฐ€์žฅ ์ผ์ฐ ์ข…๋ฃŒ๋˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์ „๋žต์€ ๋ฏธ๋ž˜์— ๋” ๋งŽ์€ ์ด๋ฒคํŠธ๋ฅผ ์ฐธ์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ๋‚จ๊ฒจ๋‘๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„ ํ (Min-Heap): ํ˜„์žฌ ๋‚ ์งœ์— ์ฐธ์„ ๊ฐ€๋Šฅํ•œ ์ด๋ฒคํŠธ๋“ค์„ ์ข…๋ฃŒ์ผ ๊ธฐ์ค€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•ญ์ƒ ๊ฐ€์žฅ ๋นจ๋ฆฌ ๋๋‚˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ตฌํ˜„ ๋‹จ๊ณ„:
    1. ์ด๋ฒคํŠธ ๋ชฉ๋ก์„ ์‹œ์ž‘์ผ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
    2. ๋‚ ์งœ๋ณ„๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ ํ•ด๋‹น ๋‚ ์งœ์— ์‹œ์ž‘ํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ Min-Heap์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ์ข…๋ฃŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ํž™์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    3. ๊ฐ ๋‚ ์งœ๋งˆ๋‹ค ํž™์—์„œ ์ด๋ฏธ ์ข…๋ฃŒ๋œ ์ด๋ฒคํŠธ(ํ˜„์žฌ ๋‚ ์งœ๋ณด๋‹ค ์ผ์ฐ ๋๋‚˜๋Š” ์ด๋ฒคํŠธ)๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    4. ํž™์ด ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด, ๊ฐ€์žฅ ๋นจ๋ฆฌ ๋๋‚˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ฐธ์„ํ•˜๊ณ  ๊ฒฐ๊ณผ ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
  • ์˜ˆ์ œ ์ฝ”๋“œ: C++, Python, JavaScript(var) ์„ธ ๊ฐ€์ง€ ์–ธ์–ด๋กœ ๊ตฌํ˜„ ์˜ˆ์‹œ๊ฐ€ ์ œ๊ณต๋˜์–ด ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์ ‘๊ทผ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์ž„ํŒฉํŠธ

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

์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐ˜์‘

์ด ๋ฌธ์ œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ž์ฃผ ๋…ผ์˜๋˜๋Š” ์ฃผ์ œ์ด๋ฉฐ, ํƒ์š•์  ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํž™์„ ํ™œ์šฉํ•œ ํšจ์œจ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ๋„๋ฆฌ ์ธ์ •๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ฐ ๊ณต๊ฐ„ ๋ณต์žก๋„์— ๋Œ€ํ•œ ์ตœ์ ํ™” ๋…ผ์˜๊ฐ€ ํ™œ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

ํ†ค์•ค๋งค๋„ˆ

์ฝ˜ํ…์ธ ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ฉฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์  ์‚ฌ๊ณ ๋ฐฉ์‹๊ณผ ์‹ค์ œ ์ฝ”๋”ฉ ๊ตฌํ˜„์— ์ง‘์ค‘ํ•˜๋Š” ์ „๋ฌธ์ ์ด๊ณ  ์‹ค์šฉ์ ์ธ ํ†ค์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์นœ๊ทผํ•œ ๋น„์œ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ๊ฐœ๋…์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

๐Ÿ“š ๊ด€๋ จ ์ž๋ฃŒ