๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“’ | Kotlin/๐Ÿค– | ์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm)

by immgga 2024. 6. 18.

์ธจ์ฒ˜: unsplash.com

 

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(ํƒ์š•๋ฒ•)์ด๋ž€ ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ(์ตœ์„ ์˜ ์„ ํƒ)์„ ๊ณ ๋ฅด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋œปํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP)์„ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์‚ฌ์šฉํ•˜๋ฉด ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์€ ์ผ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ฐฉ์•ˆํ•ด ๊ณ ์•ˆ๋˜์—ˆ๋‹ค.

 

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์„ ํƒํ•ด ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ๊ธฐ๋ฒ•์ด๋‹ค.
ํ•˜์ง€๋งŒ ์ด ๊ฐ€์žฅ ์ข‹์€ ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ ์ตœ์ข…์ ์ธ ๊ฒฐ๊ณผ ๋„์ถœ์— ๋Œ€ํ•œ ์ตœ์ ํ•ด๋ฅผ ๋ณด์žฅํ•ด ์ฃผ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

์ถœ์ฒ˜: https://velog.io/@contea95/%ED%83%90%EC%9A%95%EB%B2%95%EA%B7%B8%EB%A6%AC%EB%94%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

 

์œ„ ๊ทธ๋ฆผ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ์ตœ์ ์˜ ๊ฐ’์ผ ๋•Œ, ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ์ตœ์ ์˜ ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—

์ตœ์ข…์ ์ธ ๋‹ต์€ 23์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค(์ตœ์ ์˜ ๊ฐ’: 128).

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•ญ์ƒ ์ตœ์ข…์ ์ธ ๊ฒฐ๊ณผ ๋„์ถœ์— ์ตœ์ ํ•ด๋ฅผ ๋ณด์žฅํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ™ฉ์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

 

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์„ฑ์„ ๊ฐ€์ง€๋Š” ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๊ฐ•์ ์ด ์žˆ๋‹ค.

ํƒ์š• ์„ ํƒ ์†์„ฑ(greedy choice property)
์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ(optimal substructure)

 

์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ๋Š” DP๋กœ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์— ์–ธ๊ธ‰๋œ ์ ์ด ์žˆ๋‹ค.

์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์„ค๋ช…์€ DP ํฌ์ŠคํŒ…์— ์ž˜ ๋‚˜์™€ ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์—์„œ ์–ธ๊ธ‰ํ•˜์ง€๋Š” ์•Š๊ฒ ๋‹ค.

 

์—ฌ๊ธฐ์„œ ํƒ์š• ์„ ํƒ ์†์„ฑ์ด ๋ฌด์—‡์ธ์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด,

ํƒ์š•์ ์ธ ์„ ํƒ์€ ํ•ญ์ƒ ์•ˆ์ „์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ์•ˆ์ „ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์ด ์„ ํƒ์œผ๋กœ ์ธํ•ด ์ „์ฒด ๋ฌธ์ œ์˜ ์ตœ์ ํ•ด๋ฅผ ๋ฐ˜๋“œ์‹œ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

๊ทธ๋ฆผ์œผ๋กœ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„๋กœ๊ฐ€ ์žˆ๋‹ค.

์ถœ์ฒ˜: ๋‚˜๋ฌด์œ„ํ‚ค

 

์„œ์šธ์—์„œ ๋ถ€์‚ฐ๊นŒ์ง€ ์ตœ๋‹จ ๊ฒฝ๋กœ๋กœ ๊ฐ€๊ณ ์ž ํ•  ๋•Œ, ์šฐ๋ฆฌ๋Š” ํƒ์š•์ ์ธ ์„ ํƒ์œผ๋กœ ์ธํ•ด ์„œ์šธ์—์„œ ๋Œ€๊ตฌ๋กœ ๊ฐ€๋Š” ๊ฐ€์žฅ ์งง์€ ๊ธธ์ธ 200km๋ฅผ ์„ ํƒํ–ˆ๋‹ค.

์ด ์„ ํƒ์œผ๋กœ ์ธํ•ด ์ตœ์ข…์ ์ธ ๋‹ต์— ๋” ๊ฐ€๊นŒ์›Œ์กŒ์œผ๋ฉด ํƒ์š• ์„ ํƒ ์†์„ฑ์˜ ๋งŒ์กฑ์œผ๋กœ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„ ์˜ˆ์‹œ๋Š” ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ๋„ ๋งŒ์กฑํ•˜๋Š” ์˜ˆ์‹œ์ด๋‹ค.

 

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ž…๋ฌธํ•˜๊ธฐ ์ข‹์€ ๋ฌธ์ œ๋ฅผ ๋ช‡ ๊ฐœ ์†Œ๊ฐœํ•˜๊ฒ ๋‹ค.

(๋ฐฑ์ค€) ๋™์ „ 0, Silver 4

https://www.acmicpc.net/problem/11047

 

๋™์ „์˜ ์ข…๋ฅ˜ N๊ณผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ธˆ์•ก K๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์ œ๊ฐ๊ฐ์ธ ๋™์ „์˜ ๊ฐ€์น˜ A๊ฐ€ N๊ฐœ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, A๋ฅผ ์‚ฌ์šฉํ•ด K๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

๋™์ „์˜ ๊ฐœ์ˆ˜๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ์ด์šฉํ•ด K๋ฅผ ๊ตฌํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ž‘์€ ๋™์ „๋ถ€ํ„ฐ ํฐ ๋™์ „ ์ˆœ์œผ๋กœ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ํฐ ๋™์ „๋ถ€ํ„ฐ ์ž‘์€ ๋™์ „ ์ˆœ์œผ๋กœ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ• 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ํฐ ๋™์ „๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ์ž‘์€ ๋™์ „ ์ˆœ์œผ๋กœ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ํŽธํ–ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด K๊ฐ€ 4790์ด๊ณ , A๊ฐ€ 1, 5, 10, 50, 100, 500, 1000, 5000์ด ์žˆ์„ ๋•Œ, 4790์›์„ ๋งŒ๋“ค๋ ค๋ฉด 1000์› 4๊ฐœ, 500์› 1๊ฐœ, 100์› 2๊ฐœ, 50์› 1๊ฐœ, 10์› 4๊ฐœ๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ 4790์›์„ ๋งŒ๋“œ๋Š” ์ตœ์†Ÿ๊ฐ’์€ 12๊ฐœ์ด๋‹ค.

 

๋งŒ์•ฝ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ๋ผ๋ฉด ์œ„ ํžŒํŠธ๋ฅผ ๋ณด๊ณ  ๋ฌธ์ œ๋ฅผ ์ž˜ ํ•ด๊ฒฐํ•ด ๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค. ์ •๋‹ต ์ฝ”๋“œ๋Š” ์ฒจ๋ถ€ํ•˜์ง€ ์•Š๊ฒ ๋‹ค.

 

 

์ •๋ฆฌ

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐœ๋…์„ ๊ฐ„๋‹จํžˆ ๊ณต๋ถ€ํ•ด ๋ณด์•˜๋‹ค.

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ DP์ฒ˜๋Ÿผ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ด์„œ ์ž์‹ ์ด ๊ทธ๋ฆฌ๋””๋ฅผ ์จ์„œ ํ’€์–ด๋„ ๋˜๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋Šฅ๋ ฅ๊ณผ ๊ทธ๋ฆฌ๋””๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•˜๋Š” ๋Šฅ๋ ฅ์„ ๊ธธ๋Ÿฌ ๋ด์•ผ๊ฒ ๋‹ค.

 

 

์ฐธ๊ณ ํ•œ ๊ธ€

https://velog.io/@contea95/%ED%83%90%EC%9A%95%EB%B2%95%EA%B7%B8%EB%A6%AC%EB%94%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

ํƒ์š•๋ฒ•(๊ทธ๋ฆฌ๋””) ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํƒ์š•๋ฒ•(์ดํ•˜ '๊ทธ๋ฆฌ๋””') ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ(์ตœ์„ ์˜ ์„ ํƒ)์„ ๊ณ ๋ฅด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์‚ฌ์šฉํ•˜๋ฉด ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ

velog.io

https://namu.wiki/w/%EA%B7%B8%EB%A6%AC%EB%94%94%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (์š•์‹ฌ์Ÿ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜, Greedy Algorithm)์ด๋ž€ "๋งค ์„ ํƒ์—์„œ ์ง€๊ธˆ ์ด ์ˆœ๊ฐ„ ๋‹น์žฅ ์ตœ์ ์ธ

namu.wiki

 

728x90

๋Œ“๊ธ€