๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

๊ทธ๋ฆฌ๋”” & ๊ตฌํ˜„

by duoxi 2023. 5. 26.

๐Ÿ’ฌ ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋‚˜๋™๋นˆ๋‹˜์˜ (์ด์ฝ”ํ…Œ 2021 ๊ฐ•์˜ ๋ชฐ์•„๋ณด๊ธฐ) 2. ๊ทธ๋ฆฌ๋”” & ๊ตฌํ˜„ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์š”์•ฝํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

 

 

 

โœ” ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy) ์ด๋ž€?

ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ์ง€๊ธˆ ๋‹น์žฅ ์ข‹์€ ๊ฒƒ๋งŒ ๊ณ ๋ฅด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ’€ ๋•Œ๋Š” ์ค‘์š”ํ•œ ์ ์ด ์žˆ๋Š”๋ฐ, ํ•ด๋‹น ๋ฐฉ๋ฒ•์˜ ์ •๋‹น์„ฑ์„ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‹จ์ˆœํžˆ ๊ฐ€์žฅ ์ข‹์•„ ๋ณด์ด๋Š” ๊ฒƒ๋งŒ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์„ ํƒํ•ด๋„ ์ตœ์ ์˜ ํ•ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์ง€ ๊ฒ€ํ† ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

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

 

โ–ผ ์˜ˆ) ๊ฑฐ์Šค๋ฆ„ ๋ˆ ๋ฌธ์ œ

๋”๋ณด๊ธฐ

๋™์ „์œผ๋กœ ๊ฑฐ์Šค๋ฆ„ ๋ˆ์„ ์ฃผ๋ ค๊ณ  ํ•˜๋Š”๋ฐ 500์›, 100์›, 50์›, 10์›์ด ๋ฌดํ•œ์œผ๋กœ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๊ฑฐ์Šค๋ฆ„ ๋ˆ์ด N ์ด๋ผ๊ณ  ํ•  ๋•Œ, ์ค„ ์ˆ˜ ์žˆ๋Š” ๋™์ „์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜์‹œ์˜ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์œ„ ๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ํฐ ํ™”ํ ๋‹จ์œ„๋ถ€ํ„ฐ ๋ˆ์„ ๊ฑฐ์Šฌ๋Ÿฌ ์ฃผ๋Š” ๊ฒƒ์ด ์ตœ์ ์˜ ํ•ด๋ฅผ ๋ณด์žฅํ•˜๋Š” ์ด์œ ๋Š” ๋™์ „ ์ค‘์—์„œ ํฐ ๋‹จ์œ„๊ฐ€ ํ•ญ์ƒ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฐฐ์ˆ˜์ด๋ฏ€๋กœ ์ž‘์€ ๋‹จ์œ„์˜ ๋™์ „๋“ค์„ ์ข…ํ•ฉํ•ด ๋‹ค๋ฅธ ํ•ด๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋งŒ์•ฝ 800์›์„ ๊ฑฐ์Šฌ๋Ÿฌ ์ค˜์•ผ ํ•˜๋Š”๋ฐ ํ™”ํ ๋‹จ์œ„๊ฐ€ 500์›, 400์›, 100์ด๋ผ๋ฉด ์œ„ ๋ฐฉ์‹์€ ์ตœ์ ์˜ ํ•ด๊ฐ€ ์•„๋‹ˆ๊ฒŒ ๋œ๋‹ค. (500์› 1๊ฐœ, 100์› 3๊ฐœ/400์› 2๊ฐœ)

๋”ฐ๋ผ์„œ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ๋Š” ๋ฌธ์ œ ํ’€์ด๋ฅผ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์ •๋‹นํ•œ ์ง€ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

 

โœ” ๊ตฌํ˜„(Implementation) ์ด๋ž€?

๋จธ๋ฆฟ ์†์— ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์†Œ์Šค์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์ด๋‹ค. ๊ตฌํ˜„์€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ๋˜๋Š” ์™„์ „ ํƒ์ƒ‰์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•œ๋‹ค.

ํ’€์ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์€ ์‰ฝ์ง€๋งŒ ์†Œ์Šค์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ๋ฅผ ์ง€์นญํ•œ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ„๋‹จํ•œ๋ฐ ์ฝ”๋“œ๊ฐ€ ์ง€๋‚˜์น  ๋งŒํผ ๊ธธ์–ด์ง€๋Š” ๋ฌธ์ œ
  • ์‹ค์ˆ˜ ์—ฐ์‚ฐ์„ ๋‹ค๋ฃจ๊ณ , ํŠน์ • ์†Œ์ˆ˜์  ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ
  • ๋ฌธ์ž์—ด์„ ํŠน์ •ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ์„œ ๋Š์–ด ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ
  • ์ ์ ˆํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ

 

์ผ๋ฐ˜์ ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ์˜ 2์ฐจ์› ๊ณต๊ฐ„์€ ํ–‰๋ ฌ์˜ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. Java์—์„œ์˜ 2์ฐจ์› ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•œ ๊ฐœ๋…์ด๋‹ค. 

 

์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ์™„์ „ ํƒ์ƒ‰ ๋ฌธ์ œ์—์„œ๋Š” 2์ฐจ์› ๊ณต๊ฐ„์—์„œ์˜ ๋ฐฉํ–ฅ ๋ฒกํ„ฐ๊ฐ€ ์ž์ฃผ ํ™œ์šฉ๋œ๋‹ค.

์ด ๋•Œ, ๋™์„œ๋‚จ๋ถ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฒกํ„ฐ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. dx = {0, 0. 1, -1}, dy = {1, -1, 0, 0} . ์ด์™€ ๊ฐ™์ด ๋‹ค๋ฅธ ๋ฐฉํ–ฅ๋“ค๋„ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด์„œ ์ €์žฅํ•˜๊ณ  ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 


์œ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ๋ฌธ์ œํ’€์ด๋Š” ์ฐจ์ฐจ ์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ด๋‹ค!

'Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ (Java)  (0) 2023.09.22