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

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/67259

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ฒฝ์ฃผ๋กœ ๊ฑด์„ค

[[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[

programmers.co.kr

 

๋ฌธ์ œ ์„ค๋ช…

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


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


๋˜ํ•œ ๋‘ ์ง์„  ๋„๋กœ๊ฐ€ ์„œ๋กœ ์ง๊ฐ์œผ๋กœ ๋งŒ๋‚˜๋Š” ์ง€์ ์„ ์ฝ”๋„ˆ ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.


๊ฑด์„ค ๋น„์šฉ์„ ๊ณ„์‚ฐํ•ด ๋ณด๋‹ˆ ์ง์„  ๋„๋กœ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” 100์›์ด ์†Œ์š”๋˜๋ฉฐ, ์ฝ”๋„ˆ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค ๋•Œ๋Š” 500์›์ด ์ถ”๊ฐ€๋กœ ๋“ญ๋‹ˆ๋‹ค.
์ฃ ๋ฅด๋””๋Š” ๊ฒฌ์ ์„œ ์ž‘์„ฑ์„ ์œ„ํ•ด ๊ฒฝ์ฃผ๋กœ๋ฅผ ๊ฑด์„คํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œ ๋น„์šฉ์„ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜ ๊ทธ๋ฆผ์€ ์ง์„  ๋„๋กœ 6๊ฐœ์™€ ์ฝ”๋„ˆ 4๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ ์ž„์˜์˜ ๊ฒฝ์ฃผ๋กœ ์˜ˆ์‹œ์ด๋ฉฐ, ๊ฑด์„ค ๋น„์šฉ์€ 6 x 100 + 4 x 500 = 2600์› ์ž…๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์˜ˆ๋กœ, ์•„๋ž˜ ๊ทธ๋ฆผ์€ ์ง์„  ๋„๋กœ 4๊ฐœ์™€ ์ฝ”๋„ˆ 1๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ์ฃผ๋กœ์ด๋ฉฐ, ๊ฑด์„ค ๋น„์šฉ์€ 4 x 100 + 1 x 500 = 900์› ์ž…๋‹ˆ๋‹ค.


๋„๋ฉด์˜ ์ƒํƒœ(0์€ ๋น„์–ด ์žˆ์Œ, 1์€ ๋ฒฝ)์„ ๋‚˜ํƒ€๋‚ด๋Š” 2์ฐจ์› ๋ฐฐ์—ด board๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฒฝ์ฃผ๋กœ๋ฅผ ๊ฑด์„คํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œ ๋น„์šฉ์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

ํ’€์ด

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

 

์˜ˆ๋ฅผ ๋“ค๋ฉด, A -> B -> C ํƒ์ƒ‰๊ฒฝ๋กœ, D -> B -> C ์˜ ํƒ์ƒ‰๊ฒฝ๋กœ๊ฐ€ ์žˆ์„ ๋•Œ, ๊ฒฝ๋กœ A-B-C์—์„œ์˜ B์ง€์ ์˜ ์ตœ์†Œ๋น„์šฉ์ด 100์ด๊ณ , DBC๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ B์˜ ์ตœ์†Œ๋น„์šฉ์ด 200์ด๋ผ๋ฉด, ๋‚˜๋จธ์ง€ C๋ฅผ ํƒ์ƒ‰ํ•  ํ•„์š”์—†์ด ์ด๋ฏธ ์ตœ์†Œ๋น„์šฉ์„ ๋งŒ๋“ค ์ˆ˜ ์—†์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ ์ง€์ ์˜ ์ตœ์†Œ๋น„์šฉ์„ ๊ณ„์† ์ €์žฅํ•˜๋ฉด์„œ ๊ฐฑ์‹ ํ•˜๋Š” DP ๋ฐฐ์—ด์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ ๋ฌธ์ œ์—์„œ ์ฝ”๋„ˆ๋น„์šฉ์— ๋Œ€ํ•œ ์กฐ๊ฑด๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ง€์ ์—์„œ ์–ด๋–ค ๋ฐฉํ–ฅ์„ ์„ ํƒํ•˜๋Š”์ง€์— ๋”ฐ๋ผ์„œ ์ตœ์†Œ๋น„์šฉ์ด ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ์ตœ์†Œ๋น„์šฉ์„ ์•Œ๊ณ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ DP ๋ฐฐ์—ด์„ ๊ฐ ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด 4๊ฐœ๋ฅผ ์„ค์ •ํ•ด์„œ ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ์ตœ์†Œ๋น„์šฉ์„ ๋ชจ๋‘ ๊ธฐ๋กํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ