์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ๋ธ๋ฃจํธํฌ์ค
- DP
- js
- ์ฝ๋ฉํ ์คํธ
- JavaScript
- ๋ถ์คํธ์ปจํผ๋ฐ์ค
- ์นด์นด์ค
- ๋ถ์คํธ์บ ํ์น๋ชจ๋ฐ์ผ
- ๋ฆฌ๋์ค ํดํท
- ๊ณผ์ ํ ์คํธ
- TypeScript
- Node.js
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ด๋ฏธ์ง ์์
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ฝ๋ ํฌ๋ฉง
- ๋์ ๊ณํ๋ฒ
- router v6
- ์ฝํ
- React
- custom hook
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค
- icecandidate
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์ด๋ถํ์
- ๋๋๊ทธ ์ด๋ฒคํธ
- Redux toolkit
- svgํ์ผ ๋ค๋ฃจ๊ธฐ
- ์นด์นด์ค์ฑ์ฉ
- Today
- Total
๐ฅ dev-ruby
[๋ฐฑ์ค][BOJ] ์นด๋ ๊ตฌ๋งคํ๊ธฐ - silver.1 | ์๋ฐ์คํฌ๋ฆฝํธ | ๋์ ๊ณํ๋ฒ (Dynamic progrmming, DP) ๋ณธ๋ฌธ
[๋ฐฑ์ค][BOJ] ์นด๋ ๊ตฌ๋งคํ๊ธฐ - silver.1 | ์๋ฐ์คํฌ๋ฆฝํธ | ๋์ ๊ณํ๋ฒ (Dynamic progrmming, DP)
ruby_s 2022. 1. 26. 23:59๋ฌธ์
https://www.acmicpc.net/problem/11052
ํ์ด
function solution(N, price){
let dp = [0, ...price];
for(let i = 2; i <= N; i++){
for(let j = 1; j < i; j++)
dp[i] = Math.max(dp[i], dp[j] + dp[i - j]); // j + (i-j) = i์ด๊ธฐ ๋๋ฌธ์, i ๊ฐ์ ์นด๋๋ฅผ ๋ฝ๊ธฐ ์ํ ์กฐํฉ ๋ณ๋ก j๋ฅผ ์ฆ๊ฐ์์ผ์ ์ต๋๊ฐ์ ๊ณ์ ์
๋ฐ์ดํธํด์ค๋ค.
}
return dp[N];
}
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const N = +input[0];
const price = [...input[1].split(' ')].map((el) => +el);
console.log(solution(N, price))
์ฒ์์ ์ผ์ผ์ด N๊ฐ๋ฅผ ๋ฝ์ ์ ์๋ ์กฐํฉ์ ๊ฒฝ์ฐ ์๋ฅผ ๋ค ๊ตฌํ๋๋ฐ, ์๋ฌด๋ฆฌ๋ด๋ ์ข ๋ ์ฝ๊ฒ ํ ์ ์์ ๊ฒ ๊ฐ์๋ค.
์ ์ฝ๋๋ ๊ฐ i๋ง๋ค i๊ฐ์ฉ ๋ฝ์ ์ ์๋ ๊ฒฝ์ฐ์ ์ ๋ณ๋ก ์ต๋๊ฐ์ ๊ณ์ ์
๋ฐ์ดํธ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
i = 2์ผ ๋, j๋ 1๋ก ํ๋ฒ ๋ฐ๋ณต๋ ์ ์๊ณ (์กฐ๊ฑด์ด j < i ์ด๊ธฐ ๋๋ฌธ) ๊ธฐ์กด์ ์๋ ๊ฐ( dp[i] ) ๋ณด๋ค dp[j] + dp[i-j] ๊ฐ ๋ ํฌ๋ค๋ฉด ์
๋ฐ์ดํธ ๋๋ค.
์
๋ ฅ ๋ฐฐ์ด(price)์ 1๋ฒ์งธ ์ธ๋ฑ์ค์๋ 1์ฅ ์ง๋ฆฌ ์นด๋์ ๊ธ์ก์ด ๋ค์ด์๊ณ , 2๋ฒ์งธ์๋ 2์ฅ ์ง๋ฆฌ ์นด๋์ ๊ธ์ก, 3๋ฒ์งธ์๋ 3์ฅ ์ง๋ฆฌ ์นด๋์ ๊ธ์ก ••• ์ญ์ญ ๋ค์ด์๋๋ฐ,
i = 3 ์ผ๋๋ j๊ฐ 1, 2 ๋ก 2๋ฒ ๋ฐ๋ณต๋๊ณ , dp[j] + dp[i-j] ์์ ๋ณด๋ฉด
" j = 1 : 1๋ฒ์งธ + 2(3-1)๋ฒ์งธ ๋ํ ๊ฐ,
j = 2 : 2๋ฒ์งธ + 1(3-2)๋ฒ์งธ ๋ํ ๊ฐ " ์ ๊ฐ๊ฐ ๊ธฐ์กด ๊ฐ๊ณผ ๋น๊ตํด์ ๋ ํฐ ๊ฒฝ์ฐ ์
๋ฐ์ดํธ ํด์ฃผ๊ฒ ๋๋ค.
๊ฒฐ๊ตญ, i ๊ฐ ๋ฐ๋ณต๋ง๋ค j ๋ฐ๋ณต์์ ๋งจ ์ฒ์์ธ 1๋ถํฐ ๋์ ์ธ๋ฑ์ค ๋ฐฉํฅ์ผ๋ก ์ฌ๋ผ๊ฐ๋ ๊ฐ๊ณผ i์์ j์ฉ ๋นผ์ฃผ๋ฉด์ ๋ฎ์ ์ธ๋ฑ์ค ๋ฐฉํฅ์ผ๋ก ๋ด๋ ค์ค๋ ๊ฐ์ ๋ํ๋ฉด ๊ทธ ๋์ ํฉ์ด i๊ฐ๊ฐ ๋๊ธฐ ๋๋ฌธ์ "2๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ ์ต๋๊ฐ, 3๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ ์ต๋๊ฐ ••• N๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ ์ต๋๊ฐ" ์ด ์ญ์ญ ๊ณ์ฐ๋ผ์ dp[N]์๋ N๊ฐ๋ฅผ ๋ฝ์ ๋ ์ต๋๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
dp[1] : 1๊ฐ๋ฅผ ๋ฝ์ ๋ ์ต๋๊ฐ
dp[2] : 2๊ฐ๋ฅผ ๋ฝ์ ๋ ์ต๋๊ฐ
•••
dp[N] : N๊ฐ๋ฅผ ๋ฝ์ ๋ ์ต๋๊ฐ
์ด๋ ต๋ค ์ด๋ ค์..^^