\
10986. ๋‚˜๋จธ์ง€ ํ•ฉ
ยท
๐Ÿ“š STUDY/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜
๋ฌธ์ œ https://www.acmicpc.net/problem/10986 10986๋ฒˆ: ๋‚˜๋จธ์ง€ ํ•ฉ ์ˆ˜ N๊ฐœ A1, A2, ..., AN์ด ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, ์—ฐ์†๋œ ๋ถ€๋ถ„ ๊ตฌ๊ฐ„์˜ ํ•ฉ์ด M์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๊ตฌ๊ฐ„์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ฆ‰, Ai + ... + Aj (i ≤ j) ์˜ ํ•ฉ์ด M์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” (i, j) www.acmicpc.net ์ดํ•ด ๊ตฌ๊ฐ„์˜ ํ•ฉ์„ ๊ตฌํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์ด๋ฏ€๋กœ ๋ˆ„์  ํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•œ๋‹ค. N์˜ ๋ฒ”์œ„๊ฐ€ 100,000์ด๋ฏ€๋กœ O(N)๋งŒํผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ํƒ์ƒ‰์„ ํ†ตํ•ด ์„ ํƒํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ด๋ถ„ ํƒ์ƒ‰์ด๋‚˜ ํˆฌํฌ์ธํ„ฐ๋ฅผ ํ™œ์šฉํ•ด์•ผํ•œ๋‹ค. ๋ฐฐ์—ด ๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ 1,000,000,000์ด๋ฏ€๋กœ ์ด๋ฅผ ๋งค๋ฒˆ ๋‹ค๋ฃจ๋ฉด ์—ฐ์‚ฐ ์‹œ๊ฐ„์œผ๋กœ ์ธํ•ด ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ์—ผ๋ ค๋˜๋‹ˆ, M์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ํ™œ์šฉ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ˆ„์ ํ•ฉ(Prefix Sum)
ยท
๐Ÿ“š STUDY/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜
๊ฐœ๋… ํŠน์ • ๋ฐฐ์—ด์ด ์žˆ์„ ๋•Œ, ๊ตฌ๊ฐ„์˜ ํ•ฉ์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฐ์—ด์ด ์žˆ์„ ๋•Œ 3๋ฒˆ์งธ๋ถ€ํ„ฐ 5๋ฒˆ์งธ๊นŒ์ง€์˜ ๋ˆ„์ ํ•ฉ์€ 12์ด๋‹ค. ๊ตฌํ˜„ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ˆ„์ ํ•ฉ์„ ๊ตฌํ•จ์— ์žˆ์–ด, i๋ฒˆ์งธ๋ถ€ํ„ฐ j๋ฒˆ์งธ๊นŒ์ง€์˜ ๋ˆ„์ ํ•ฉ์„ ๊ตฌํ•˜๋ผ๊ณ  ํ•  ๋•Œ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๋”ํ•˜๋ฉด i~j๊นŒ์ง€๋ฅผ m๊ฐœ์˜ ์›์†Œ๋ผ๊ณ  ํ•˜๋ฉด ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ m(j-i+1)์˜ ์ œ๊ณฑ์œผ๋กœ ๋Š˜์–ด๋‚œ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ„๋‹จํ•œ ๊ฐœ๋…์„ ๋„์ž…ํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ O(2)๊นŒ์ง€ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์ „์ฒด ๋ˆ„์ ํ•ฉ์„ ๊ตฌํ•œ๋‹ค. i๋ฒˆ์งธ๋ถ€ํ„ฐ j๋ฒˆ์งธ๊นŒ์ง€ ๋ˆ„์ ํ•ฉ์„ ๊ตฌํ•˜๋ ค๋ฉด ์ „์ฒด ๋ˆ„์ ํ•ฉ์˜ j๋ฒˆ์งธ ์ธ๋ฑ์Šค์—์„œ i-1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋นผ๋ฉด ๋œ๋‹ค. ์‘์šฉ ์ž๋ฃŒ๊ตฌ์กฐ ์‘์šฉ ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ 2042 ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ https://www.acmicpc.net/problem/2042 2042๋ฒˆ: ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ ์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 ≤ N..
11286. ์ ˆ๋Œ“๊ฐ’ ํž™
ยท
๐Ÿ“š STUDY/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜
https://www.acmicpc.net/problem/11286 11286๋ฒˆ: ์ ˆ๋Œ“๊ฐ’ ํž™ ์ฒซ์งธ ์ค„์— ์—ฐ์‚ฐ์˜ ๊ฐœ์ˆ˜ N(1≤N≤100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ x๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋งŒ์•ฝ x๊ฐ€ 0์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ฐฐ์—ด์— x๋ผ๋Š” ๊ฐ’์„ ๋„ฃ๋Š”(์ถ”๊ฐ€ํ•˜๋Š”) ์—ฐ์‚ฐ์ด๊ณ , x๊ฐ€ 0 www.acmicpc.net ์ดํ•ด ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ํŒŒ์ด์ฌ ๋‚ด์žฅํ•จ์ˆ˜์ธ Heapq๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ด„ ๊ตฌํ˜„ ๋‚ด์žฅํ•จ์ˆ˜ ์‚ฌ์šฉ import heapq ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ˆ๋Œ“๊ฐ’๊ณผ ์‹ค๊ฐ’์„ ๊ฐ™์ด ์ €์žฅํ•˜์—ฌ ๋น„๊ตํ•˜์—ฌ ์‚ฌ์šฉ ์ง์ ‘ ๊ตฌํ˜„ class๋ฅผ ํ†ตํ•ด ์‹ค ๊ฐ’์„ ์ €์žฅํ•˜๋ฉด ์ ˆ๋Œ“๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ตํ•˜์—ฌ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑ ์ฝ”๋“œ # 11286 ์ ˆ๋Œ“๊ฐ’ ํž™ import sys input = s..
ํฌ๋ฃจ์Šค์นผ(Kruskal) - ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST)
ยท
๐Ÿ“š STUDY/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜
๊ฐœ๋… ์‹ ์žฅ ํŠธ๋ฆฌ(Spanning Tree) ๋ชจ๋“  ์ •์ ์„ ํฌํ•จํ•˜๋ฉด์„œ ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„ ํŠน์ง• ์› ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ์ •์ ์„ ํฌํ•จ ๊ฐ„์„ (node) ์ˆ˜ = ์ •์  ์ˆ˜ - 1 ๋…ธ๋“œ ๊ฐ„ ์‚ฌ์ดํด์„ ํ˜•์„ฑํ•˜์ง€ ์•Š์Œ ํ•œ ๊ทธ๋ž˜ํ”„ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(Minimum Spanning Tree) ๊ฐ„์„ (node) ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ๊ฐ€์žฅ ์ž‘์€ ์‹ ์žฅ ํŠธ๋ฆฌ ๊ฐ„์„ (node) ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฐ„์„ ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜์—ฌ ์‹ ์žฅํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹ ๋Œ€ํ‘œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : Kruskal ์•Œ๊ณ ๋ฆฌ์ฆ˜, Prim ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฐจ์ด์  Kruskal ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๊ฐ„์„ (node)๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•˜์—ฌ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑ Prim ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์ •์ (spot)์„ ์ค‘์‹ฌ์œผ๋กœ ํ•˜์—ฌ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑ ํฌ๋ฃจ์Šค์นผ(Kruskal) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ–๋Š”..
18111. ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ
ยท
๐Ÿ“š STUDY/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜
https://www.acmicpc.net/problem/18111 ์ดํ•ด ํ‰ํƒ„ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋†’์ด์— ๋Œ€ํ•ด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ํ’€์–ด์•ผํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ์ฝ์–ด๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ ๋“ฏ, ๋†’์ด์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์•„ 2์ฐจ์› ๋ฐฐ์—ด์ด ์•„๋‹Œ 1์ฐจ์› ๋ฐฐ์—ด๋กœ ์ž…๋ ฅ์„ ๋ฐ›์•„๋„ ๋˜๊ณ , Dictionary ํ˜•ํƒœ๋กœ ๋ฐ›์•„๋„ ๋œ๋‹ค. ๊ตฌํ˜„ N*M ํ–‰๋ ฌ์„ ๋†’์ด์— ๋Œ€ํ•œ Dictionary๋กœ ์ •์˜ collections ๋‚ด๋ถ€ defaultdict๋ฅผ ํ™œ์šฉ ๋†’์ด์— ๋Œ€ํ•ด ์Œ“์„ ๋ธ”๋Ÿญ ์ˆ˜์™€ ๋ถ€์ˆ  ๋ธ”๋Ÿญ ์ˆ˜๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜์—ฌ ๊ณ„์‚ฐ ์‹์œผ๋กœ ํ’€์ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๊ฐ€? ๐Ÿ‘‰ (๋ถ€์ˆ  ๋ธ”๋Ÿญ ์ˆ˜) + (์ตœ์ดˆ ์ธ๋ฒคํ† ๋ฆฌ ๋ธ”๋Ÿญ ์ˆ˜) >= (์Œ“๋Š” ๋ธ”๋Ÿญ ์ˆ˜) ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ ๐Ÿ‘‰ (๋ถ€์ˆ  ๋ธ”๋Ÿญ ์ˆ˜) + 2 * (์Œ“๋Š” ๋ธ”๋Ÿญ ์ˆ˜) ๊ฑธ๋ฆฌ๋Š” ์ตœ์†Œ ์‹œ๊ฐ„ ์ €์žฅ ๋ฐ ์ตœ์†Œ ์‹œ๊ฐ„ ์ค‘๋ณต ์‹œ ์ตœ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] Union-Find
ยท
๐Ÿ“š STUDY/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜
๊ฐœ๋… ๊ทธ๋ž˜ํ”„ ์ด๋ก ์œผ๋กœ, ์ƒํ˜ธ ๋ฐฐํƒ€์  ์ง‘ํ•ฉ(์„œ๋กœ์†Œ์ง‘ํ•ฉ:Disjoint-Set) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ„ ์ฃผ๋กœ ํฌ๋ฃจ์Šค์นผ(Krusckal) ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ˆœํ™˜ํ•˜์ง€ ์•Š๋Š” ํŠธ๋ฆฌ ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ๋‹จ๊ณ„๋ณ„๋กœ ์ดํ•ดํ•˜๊ธฐ ๋งŒ์•ฝ ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์ด 4๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง„ ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์ด ์žˆ๋‹ค๋ฉด, ๋…ธ๋“œ ๋ฒˆํ˜ธ 1 2 3 4 ๋Œ€ํ‘œ ๋ฒˆํ˜ธ 1 2 3 4 1๋ฒˆ๊ณผ 2๋ฒˆ์ด ๊ฐ™์€ ์ง‘ํ•ฉ์ด๋ผ๋ฉด? ๋Œ€ํ‘œ๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ฐ™์€ ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ Union ๊ฒฐ๊ณผ ๋…ธ๋“œ ๋ฒˆํ˜ธ 1 2 3 4 ๋Œ€ํ‘œ ๋ฒˆํ˜ธ 1 1 3 4 ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์ด ์žˆ์„ ๋•Œ 2๋ฒˆ์€ ์–ด๋–ค ์ง‘ํ•ฉ์— ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์„๊นŒ? ๋…ธ๋“œ ๋ฒˆํ˜ธ 1 2 3 4 ๋Œ€ํ‘œ ๋ฒˆํ˜ธ 1 3 4 1 ๋…ธ๋“œ ๋ฒˆํ˜ธ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ 2๋ฒˆ ๐Ÿ‘‰ 3๋ฒˆ ๐Ÿ‘‰ 4๋ฒˆ ๐Ÿ‘‰ 1๋ฒˆ (๋ชจ๋‘ ๊ฐ™์€ ์ง‘ํ•ฉ) Find ๋‹ค๋ฅธ ํ‘œํ˜„ ๋…ธ๋“œ ๋ฒˆํ˜ธ ..