๋ชฉ๋ก๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (181)

๐ŸŒฑ → ๐ŸŒณ

Algorithm) Dynamic Programming

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ( ๋™์  ๊ณ„ํš๋ฒ•) ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ ์‹œ๊ฐ„ ํšจ์œจ์„ฑ์„ ๋น„์•ฝ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• ์ด๋ฏธ ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ(์ž‘์€ ๋ฌธ์ œ)๋Š” ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ €์žฅํ•˜์—ฌ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๋„๋ก ํ•จ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ตฌํ˜„์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹ ํƒ‘ ๋‹ค์šด(ํ•˜ํ–ฅ์‹) ๋ณดํ…€ ์—…(์ƒํ–ฅ์‹) ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ถ„์•ผ์—์„œ ๋™์ (dynamic)์ด๋ž€? ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๋™์  ํ• ๋‹น(dynamic allocation)์€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์˜๋ฏธ ๋ฐ˜๋ฉด ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ‘๋‹ค์ด๋‚˜๋ฏน’์€ ๋ณ„ ์˜๋ฏธ ์—†์ด ์‚ฌ์šฉ๋œ ๋‹จ์–ด ๋‹ค์ด๋‚˜๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์กฐ๊ฑด ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ(Optimal Substructure) ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž‘์€ ๋ฌธ์ œ์˜ ๋‹ต์„ ๋ชจ์•„์„œ..

Algorithms 2022. 10. 25. 15:07
Algorithm) Binary Search(์ด์ง„ํƒ์ƒ‰)

ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆœ์ฐจ ํƒ์ƒ‰: ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์žˆ๋Š” ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์•ž์—์„œ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ• ์ด์ง„ ํƒ์ƒ‰: ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์”ฉ ์ขํ˜€๊ฐ€๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ด์ง„ ํƒ์ƒ‰์€ ์‹œ์ž‘์ , ๋์ , ์ค‘๊ฐ„์ ์„ ์ด์šฉํ•˜์—ฌ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•จ ์ด์ง„ ํƒ์ƒ‰ ๋™์ž‘ ์˜ˆ์‹œ ์ด์ง„ ํƒ์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋‹จ๊ณ„๋งˆ๋‹ค ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ 2๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋ฏ€๋กœ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š” $log_2N$ ์— ๋น„๋ก€ํ•จ ์˜ˆ๋ฅผ ๋“ค์–ด ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ 32๊ฐœ์ผ ๋•Œ, ์ด์ƒ์ ์œผ๋กœ 1๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๋ฉด 16๊ฐœ๊ฐ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋‚จ์Œ 2๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๋ฉด 8๊ฐœ๊ฐ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋‚จ์Œ 3๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๋ฉด 4๊ฐœ๊ฐ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋‚จ์Œ ๋‹ค์‹œ ๋งํ•ด ์ด์ง„ ํƒ์ƒ‰์€ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์”ฉ ์ค„์ด๋ฉฐ, ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” $O(logN)$์„ ๋ณด์žฅํ•จ ํŒŒ์ด์ฌ ์ด์ง„ ํƒ์ƒ‰ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ bis..

Algorithms 2022. 10. 25. 12:55
Algorithm) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ

์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ํ•˜๊ธฐ ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ๋จผ์ € ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ์€ ์‹œ๊ฐ„์ œํ•œ(์ˆ˜ํ–‰์‹œ๊ฐ„ ์š”๊ตฌ์‚ฌํ•ญ) ์‹œ๊ฐ„์ œํ•œ์ด 1์ดˆ์ธ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚ฌ์„ ๋•Œ, ์ผ๋ฐ˜์ ์ธ ๊ธฐ์ค€ N์˜ ๋ฒ”์œ„๊ฐ€ 500์ธ ๊ฒฝ์šฐ: ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(N^3)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๊ณ„ N์˜ ๋ฒ”์œ„๊ฐ€ 2,000์ธ ๊ฒฝ์šฐ: ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(N^2)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๊ณ„ N์˜ ๋ฒ”์œ„๊ฐ€ 100,000์ธ ๊ฒฝ์šฐ: ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(NlogN)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๊ณ„ N์˜ ๋ฒ”์œ„๊ฐ€ 10,000,000์ธ ๊ฒฝ์šฐ: ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(N)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๊ณ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ • (์ผ๋ฐ˜์ ์œผ๋กœ) 1. ์ง€๋ฌธ ์ฝ๊ธฐ ๋ฐ ์ปดํ“จํŒ…์  ์‚ฌ๊ณ  2. ์š”๊ตฌ์‚ฌํ•ญ(๋ณต์žก๋„) ๋ถ„์„ 3. ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์•„์ด๋””์–ด ์ฐพ๊ธฐ 4. ์†Œ์Šค์ฝ”๋“œ ์„ค๊ณ„ ๋ฐ ์ฝ”๋”ฉ ์ผ๋ฐ˜์ ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ ์ถœ์ œ์ž๋“ค์€ ํ•ต์‹ฌ ์•„์ด๋””์–ด๋ฅผ ์บ์น˜ํ•œ..

Algorithms 2022. 10. 25. 12:47
[๋ฐฑ์ค€] 18870๋ฒˆ: ์ขŒํ‘œ ์••์ถ• python

https://www.acmicpc.net/problem/18870 18870๋ฒˆ: ์ขŒํ‘œ ์••์ถ• ์ˆ˜์ง์„  ์œ„์— N๊ฐœ์˜ ์ขŒํ‘œ X1, X2, ..., XN์ด ์žˆ๋‹ค. ์ด ์ขŒํ‘œ์— ์ขŒํ‘œ ์••์ถ•์„ ์ ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค. Xi๋ฅผ ์ขŒํ‘œ ์••์ถ•ํ•œ ๊ฒฐ๊ณผ X'i์˜ ๊ฐ’์€ Xi > Xj๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ขŒํ‘œ์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. X1, X2, ..., XN์— ์ขŒ www.acmicpc.net ๐Ÿ“Œ ๋ฌธ์ œ ํ•ด์„ค "Xi>Xj๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ขŒํ‘œ์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์•„์•ผ๋œ๋‹ค" ๋ผ๋Š” ๋œป์€ ์ฆ‰ Xi๊ฐ€ ๋ฆฌ์ŠคํŠธ ์•ˆ์—์„œ์˜ ํฌ๊ธฐ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค๋Š” ๋ง (ํฌ๊ธฐ ์ˆœ์„œ๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘.) ์ฆ‰, ๋ฆฌ์ŠคํŠธ์•ˆ์—์„œ ์ž๊ธฐ๋ณด๋‹ค ์ž‘์€ ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ, ์ž์‹ ์ด ๋ฆฌ์ŠคํŠธ ์•ˆ์—์„œ์˜ ํฌ๊ธฐ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋จ ๐Ÿ“Œ ์ฝ”๋“œ ์‹คํŒจ ์ฝ”๋“œ (์‹œ๊ฐ„ ์ดˆ๊ณผ) n = int(input())..

Algorithms 2022. 10. 10. 10:44