DP

์•Œ๊ณ ๋ฆฌ์ฆ˜/BOJ

[BOJ] 2169 ๋กœ๋ด‡ ์กฐ์ข…ํ•˜๊ธฐ - Java

โœจ DP https://www.acmicpc.net/problem/2169 2169๋ฒˆ: ๋กœ๋ด‡ ์กฐ์ข…ํ•˜๊ธฐ ์ฒซ์งธ ์ค„์— N, M(1โ‰คN, Mโ‰ค1,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” M๊ฐœ์˜ ์ˆ˜๋กœ ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฐฐ์—ด์˜ ๊ฐ ์ˆ˜๋Š” ์ ˆ๋Œ“๊ฐ’์ด 100์„ ๋„˜์ง€ ์•Š๋Š” ์ •์ˆ˜์ด๋‹ค. ์ด ๊ฐ’์€ ๊ทธ ์ง€์—ญ์˜ ๊ฐ€์น˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. www.acmicpc.net ๐Ÿ“ ๊ณ ๋ คํ•ด์•ผํ•  ์‚ฌํ•ญ ๋กœ๋ด‡์€ ์›€์ง์ผ ๋•Œ ๋ฐฐ์—ด์—์„œ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ, ์•„๋ž˜์ชฝ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์œ„์ชฝ์œผ๋กœ๋Š” ์ด๋™ X ํ•œ ๋ฒˆ ํƒ์‚ฌํ•œ ์ง€์—ญ์€ ์žฌํƒ์‚ฌ X (1, 1)์—์„œ (N, M)๊นŒ์ง€ ๊ฐˆ ๋•Œ ํƒ์‚ฌํ•œ ์ง€์—ญ๋“ค์˜ ๊ฐ€์น˜์˜ ์ตœ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ ๐Ÿ•น๏ธ ํ’€์ด ๋ฐฉ๋ฒ• ์šฐ์„  0๋ฒˆ์งธ ํ–‰์— ์žˆ๋Š” ๊ฐ’๋“ค์€ ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ด๋™ํ•˜๋ฉด์„œ ํ•ฉ์ณ์ง„ ๊ฐ’์„ ๊ธฐ๋กํ•œ๋‹ค. ์ด๋ฏธ ํƒ์ƒ‰ํ•œ ๊ธธ์€ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ฒฝ๋กœ๊ฐ€ ์™ผ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ ์ด๋™..

์•Œ๊ณ ๋ฆฌ์ฆ˜/๐Ÿ—‚๏ธ ์ •๋ฆฌ

DP - Knapsack (๋ฐฐ๋‚ญ๋ฌธ์ œ)

https://www.acmicpc.net/problem/12865 12865๋ฒˆ: ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ ์ฒซ ์ค„์— ๋ฌผํ’ˆ์˜ ์ˆ˜ N(1 โ‰ค N โ‰ค 100)๊ณผ ์ค€์„œ๊ฐ€ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ K(1 โ‰ค K โ‰ค 100,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑฐ์ณ ๊ฐ ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ W(1 โ‰ค W โ‰ค 100,000)์™€ ํ•ด๋‹น ๋ฌผ๊ฑด์˜ ๊ฐ€์น˜ V(0 โ‰ค V โ‰ค 1,000) www.acmicpc.net ๐Ÿ•น๏ธ Knapsack ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณผ์ • DP ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋กœ, ๋ฐฐ๋‚ญ์˜ ํฌ๊ธฐ k์™€ n๊ฐœ์˜ ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ(w)์™€ ๊ฐ€์น˜(v)๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€๋ฐฉ์— ๋ฌผ๊ฑด์„ k์— ๋„˜์ง€ ์•Š๋„๋ก ๋„ฃ๊ณ  ์ตœ๋Œ€ ๊ฐ€์น˜์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ex) ๋ฐฐ๋‚ญ์˜ ํฌ๊ธฐ๋Š” k์ด๊ณ , 5๊ฐœ์˜ ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ์™€ ๊ฐ€์น˜๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ตœ๋Œ€ ๊ฐ€์น˜์˜ ํ•ฉ์„ ๊ตฌํ•˜๊ธฐ ๋ฌผ๊ฑด 1 : w =..

์•Œ๊ณ ๋ฆฌ์ฆ˜/๐Ÿ—‚๏ธ ์ •๋ฆฌ

LIS (์ตœ์žฅ์ฆ๊ฐ€๋ถ€๋ถ„์ˆ˜์—ด)

LIS(Longest Increasing Subsequence)๋Š” ์›์†Œ๊ฐ€ n๊ฐœ์ธ ๋ฐฐ์—ด์—์„œ ์ผ๋ถ€ ์›์†Œ๋ฅผ ๊ณจ๋ผ๋‚ด์–ด ๋งŒ๋“  ๋ถ€๋ถ„ ์ˆ˜์—ด ์ค‘์—์„œ ๋ชจ๋“  ์›์†Œ๋“ค์ด ์ด์ „ ์›์†Œ๋ณด๋‹ค ํฌ๋‹ค๋Š” ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๊ณ  ๊ทธ ๊ธธ์ด๊ฐ€ ์ตœ๋Œ€์ธ ๋ถ€๋ถ„ ์ˆ˜์—ด์ด๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž. A = {10, 20, 10, 30, 20, 50}์ธ ์ˆ˜์—ด์—์„œ ์›์†Œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์€ {10, 20}, {20, 30, 50}, {10, 30, 50} ๋“ฑ์ด ์žˆ๋Š”๋ฐ, ๊ทธ ์ค‘ ๊ธธ์ด๊ฐ€ ์ตœ๋Œ€์ธ ๋ถ€๋ถ„ ์ˆ˜์—ด์€ ๊ธธ์ด๊ฐ€ 4์ธ {10, 20, 30, 50}์ด๋‹ค. ๋Œ€ํ‘œ ๋ฌธ์ œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. https://www.acmicpc.net/problem/11053 11053๋ฒˆ: ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด ์ˆ˜์—ด A๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค..

soogoori
'DP' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก