Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป
๋ฐ˜์‘ํ˜•

DP 7

[๋ฐฑ์ค€] (Swift) 14501๋ฒˆ - ํ‡ด์‚ฌ (DP๋กœ ํ’€๊ธฐ)

๋ฌธ์ œ๋งํฌ https://www.acmicpc.net/problem/14501 14501๋ฒˆ: ํ‡ด์‚ฌ ์ฒซ์งธ ์ค„์— ๋ฐฑ์ค€์ด๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต์„ ์ถœ๋ ฅํ•œ๋‹ค. www.acmicpc.net ๋‚ด๊ฐ€ ํ‘ผ ์ฝ”๋“œ var n = Int(readLine()!)! var tp: [[Int]] = [] var dp = Array(repeating: 0, count: 100) for i in 0..

Algorithm/Baekjoon 2022.05.17

[๋ฐฑ์ค€] (Swift) 2225๋ฒˆ - ํ•ฉ๋ถ„ํ•ด (dp, 2์ฐจ์› ๊ทœ์น™, ์Šค์œ„ํ”„ํŠธ ํ’€์ด)

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/2225 2225๋ฒˆ: ํ•ฉ๋ถ„ํ•ด ์ฒซ์งธ ์ค„์— ๋‹ต์„ 1,000,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. www.acmicpc.net ํ’€์ด IDEA ๊ทœ์น™์„ ์ฐพ๋‹ค๊ฐ€ 2์ฐจ์›๋ฐฐ์—ด๋กœ ํ’€์–ด์•ผํ•œ๋‹ค๋Š” ์ƒ๊ฐ์„ ๋ฏธ์ฒ˜ ํ•˜์ง€ ๋ชปํ•ด์„œ ์ธํ„ฐ๋„ท์„ ์ฐธ๊ณ ํ–ˆ๋‹ค. dp ๋„ ๋‹ค์–‘ํ•œ ์œ ํ˜•์„ ํ’€๋ฉฐ ์–ด๋–ค ์ƒํ™ฉ์ผ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ด์•ผํ•˜๋Š”์ง€ ๊ฐ์„ ์ตํ˜€์•ผํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ทœ์น™์ฐพ๊ธฐ๊ฐ€ ํž˜๋“ค์—ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๋ฉด 2์ฐจ์›์œผ๋กœ ํ’€์ž. k๊ฐœ๋ฅผ ๋”ํ•ด์„œ n์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ฐฐ์—ด๋กœ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค. 2์ฐจ์› ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ ํ‘œ๋ฅผ ๊ทธ๋ฆฌ๋ฉด์„œ ๊ทœ์น™์„ ์ฐพ์•„๋‚˜์„œ๋ฉด ๋œ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•œ ๊ทœ์น™์ด ์žˆ๋‹ค. dp๋Š” ๋ฌด์กฐ๊ฑด ๊ทœ์น™๋ถ€ํ„ฐ! ๊ทœ์น™์„ ์„ค๋ช…ํ•ด๋ณด๊ฒ ๋‹ค. ์šฐ์„  ์œ„์—์„œ ์ ์€๊ฒƒ ์ฒ˜๋Ÿผ k๊ฐœ์˜ ์ˆ˜๋ฅผ ๋”ํ•ด์„œ n์„ ๋งŒ๋“ค์ž! ๋ผ๋Š” ๋งฅ๋ฝ..

Algorithm/Baekjoon 2022.03.18

[๋ฐฑ์ค€] (Swift) 1699๋ฒˆ - ์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ (dp)

๋ฌธ์ œ๋งํฌ https://www.acmicpc.net/problem/1699 1699๋ฒˆ: ์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ ์–ด๋–ค ์ž์—ฐ์ˆ˜ N์€ ๊ทธ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ œ๊ณฑ์ˆ˜๋“ค์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 11=32+12+12(3๊ฐœ ํ•ญ)์ด๋‹ค. ์ด๋Ÿฐ ํ‘œํ˜„๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, 11์˜ ๊ฒฝ์šฐ 11=22+22+12+12+12(5๊ฐœ ํ•ญ)๋„ ๊ฐ€๋Šฅํ•˜๋‹ค www.acmicpc.net ๋ฌธ์ œ ํ’€์ด IDEA ์šฐ์„  dp ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜๋ฉด, ๊ทœ์น™์„ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ˆ˜๊ธฐ๋กœ ์จ๋ณธ๋‹ค. ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค. ๋ฌธ์ œ์˜ ๊ทœ์น™์ด ๋ณด์ผ๋“ฏ, ๋ณด์ด์ง€ ์•Š์•˜๋‹ค. dp ๋ฐฐ์—ด์— 1์ผ๋•Œ ํ•ญ์˜ ์ˆ˜ 1, 2์ผ๋•Œ ํ•ญ์˜ ์ˆ˜ 2, 3์ผ๋•Œ ํ•ญ์˜ ์ˆ˜ 3, 4์ผ๋•Œ ํ•ญ์˜ ์ˆ˜ 1.. ์ด๋ ‡๊ฒŒ ๋„ฃ์œผ๋ ค๊ณ  ํ•˜๋Š” ๊ฑด ์•Œ๊ฒ ๋‹ค. ๊ทผ๋ฐ ์ด์ œ ์–ด๋–ป๊ฒŒ ์ ํ™”์‹์„ ๋งŒ๋“ค์–ด์•ผํ• ๊นŒ? ์šฐ์„  ๋‚˜๋Š” ์•„..

Algorithm/Baekjoon 2022.03.16

[๋ฐฑ์ค€] (Swift) 1912๋ฒˆ - ์—ฐ์†ํ•ฉ (dp max ๊ฐ’ ๊ตฌํ•˜๊ธฐ!)

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/1912 1912๋ฒˆ: ์—ฐ์†ํ•ฉ ์ฒซ์งธ ์ค„์— ์ •์ˆ˜ n(1 ≤ n ≤ 100,000)์ด ์ฃผ์–ด์ง€๊ณ  ๋‘˜์งธ ์ค„์—๋Š” n๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜๋Š” -1,000๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค. www.acmicpc.net ๋ฌธ์ œ ํ’€์ด idea ์•ž์—์„œ ํ’€๋˜ dp ๋ฌธ์ œ์™€ ๋‹ค๋ฅผ ๊ฒƒ ์—†๋Š” ๋ฌธ์ œ! ์•ž์—์„œ๋ถ€ํ„ฐ ๋”ํ•ด์ฃผ๊ณ  max๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋ผ. ์™œ๋ƒ๋ฉด!! ์–ด์ฐจํ”ผ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ๋Š”๊ฑฐ๋ผ ๊ณ„์™ max ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์†Œ์Šค์ฝ”๋“œ let n = Int(String(readLine()!))! let arr = readLine()!.split(separator: " ").map{Int(String($0))!} var dp ..

Algorithm/Baekjoon 2022.03.16

[์•Œ๊ณ ๋ฆฌ์ฆ˜] (Swift) ์ตœ๊ฐ• ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด (LIS) ์•Œ๊ณ ๋ฆฌ์ฆ˜ (DP, ๋™์ ๊ณ„ํš๋ฒ•์„ ํ™œ์šฉํ•œ LIS)

์ตœ์žฅ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด (LIS,Longest Increasing Subsequence) ์ด๋ž€? ์–ด๋–ค ์ž„์˜์˜ ์ˆ˜์—ด์ด ์ฃผ์–ด์งˆ ๋•Œ, ์ด ์ˆ˜์—ด์—์„œ ๋ช‡ ๊ฐœ์˜ ์ˆ˜๋“ค์„ ์ œ๊ฑฐํ•ด์„œ ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ๋งŒ๋“ค์–ด์ง„ ๋ถ€๋ถ„ ์ˆ˜์—ด ์ค‘ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฐ€์žฅ ๊ธด ์ˆ˜์—ด์„ "์ตœ์žฅ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด"์ด๋ผ๊ณ  ํ•œ๋‹ค. - ๋‚˜๋ฌด์œ„ํ‚ค ๐ŸŒณ โ–ท ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž. [ 3, 5, 7, 9, 2, 1, 4, 8] ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆ˜์—ด์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์ด ์ˆ˜์—ด์—์„œ ๋ช‡ ๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ด์„œ ๋ถ€๋ถ„์ˆ˜์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋ช‡ ๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด์„ ์ตœ์žฅ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด์ด๋ผ๊ณ  ํ•˜์˜€๋Š”๋ฐ, ์ฆ‰, '๊ณต์ฐจ'๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„๋„ ๋ถ€๋ถ„์ˆ˜์—ด์ด๋ผ๊ณ  ๋ณธ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. (๊ทœ์น™์ ์ด์ง€ ์•Š๊ณ  ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋ฉด ๋œ๋‹ค๋Š” ๋œป) ๋”ฐ๋ผ์„œ ์œ„ ์ˆ˜์—ด์—์„œ ๋„์ถœ๋  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ˆ˜..

Algorithm/Basic 2022.03.13

[๋ฐฑ์ค€] (Swift) 1463๋ฒˆ - 1๋กœ ๋งŒ๋“ค๊ธฐ (์Šค์œ„ํ”„ํŠธ, DP, ๋™์ ๊ณ„ํš๋ฒ•)

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/1463 1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ ์ฒซ์งธ ์ค„์— 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 106๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. www.acmicpc.net ๋‚ด๊ฐ€ ํ‘ผ ํ’€์ด bottom up ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ ํ’€์ด dp ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๊ฐ€ ์ˆซ์ž๋ฅผ ๋œปํ•˜๊ณ , value๊ฐ€ ๊ทธ ์ธ๋ฑ์Šค๊นŒ์ง€ ๋„๋‹ฌํ• ๋•Œ ์ตœ์†Œ ๊ฒฝ์šฐ์˜ ์ˆ˜์ด๋‹ค. ์ฆ‰, dp ๋ฐฐ์—ด์—๋Š” ๊ทธ ์ˆซ์ž๊นŒ์ง€ ๋„๋‹ฌํ• ๋•Œ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ํ•ด๋‘๋Š” ๊ฒƒ์ด๋‹ค. 1๋ฒˆ๊ทœ์น™ (3์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง„๋‹ค) dp[n] = d[n/3] +1 ๋ฐ”๋กœ ์ง์ „ (3์˜๋ฐฐ์ˆ˜๋‹ˆ๊นŒ n/3) ๊ฒฝ์šฐ์˜ ์ˆ˜ ์—์„œ 1์„ ๋”ํ•ด์ฃผ๋Š” ๊ฒƒ 2๋ฒˆ๊ทœ์น™ (2๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง„๋‹ค) dp[n] = dp[n/2] +1 3๋ฒˆ๊ทœ์น™ (1์„ ๋บ€๋‹ค) dp[n] = dp[n-1]+1 1์„ ๋นผ๋Š” ๊ฑด,..

Algorithm/Baekjoon 2022.03.05

[์•Œ๊ณ ๋ฆฌ์ฆ˜] Dynamic Programming (๋™์  ๊ณ„ํš๋ฒ•, DP) (feat. Swift ์Šค์œ„ํ”„ํŠธ)

Dynamic Programming (๋™์  ๊ณ„ํš๋ฒ•) ๋™์ ๊ณ„ํš๋ฒ•(๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ) ์ด๋ž€, ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•œ๋‹ค. ์ด๊ฒƒ์€ ๋ถ€๋ถ„ ๋ฌธ์ œ ๋ฐ˜๋ณต๊ณผ ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์— ๋น„ํ•ด ๋”์šฑ ์ ์€ ์‹œ๊ฐ„์„ ๋‚ด์–ด ํ’€ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. - Wikipedia โ–ท ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ์˜ DP ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์˜ ๋‹จ๊ณจ ๋ฌธ์ œ๋กœ ์ถœ์ œ๋˜๊ณ  ์žˆ๊ธฐ์— ํ•„์ˆ˜์ ์œผ๋กœ ์•Œ์•„์•ผํ•˜๋Š” ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ฐ„ํ˜น ์ œ์•ฝ์‚ฌํ•ญ์— ์ฃผ์–ด์ง€๋Š” ์ˆซ์ž์˜ ๋ฒ”์œ„๊ฐ€ ํฌ๊ณ , ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์—„์ฒญ ๋งŽ์€ ๋ฌธ์ œ๋“ค์ด ๋Œ€๋ถ€๋ถ„ DP(๋™์ ๊ณ„ํš๋ฒ•) ์„ ํ™œ์šฉํ•˜์—ฌ ํ’€์–ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. Dynamic Programming (๋™์  ๊ณ„ํš๋ฒ•) ๋ฐฉ๋ฒ• ๋ชจ๋“  ์ž‘์€ ๋ฌธ์ œ๋“ค์„ ํ•œ ๋ฒˆ๋งŒ ํ’€์–ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ •๋‹ต์„ ๊ตฌํ•œ ์ž‘์€ ๋ฌธ์ œ์˜ ๋‹ต์€ ์–ด๋”˜๊ฐ€์— ๋ฉ”๋ชจํ•ด๋†“๋Š”..

Algorithm/Basic 2022.03.03
๋ฐ˜์‘ํ˜•