\
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 3 x n ํƒ€์ผ๋ง, JavaScript ํ’€์ด
ยท
๐Ÿ“š STUDY/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜
๋ฌธ์ œ๋ฌธ์ œ๋งํฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ์ŠคSW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„programmers.co.kr ์ œํ•œ์‚ฌํ•ญ๊ฐ€๋กœ์˜ ๊ธธ์ด n์€ 5,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ž…๋‹ˆ๋‹ค.๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„ ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ 1,000,000,007์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ returnํ•ด์ฃผ์„ธ์š”.์ž…์ถœ๋ ฅ ์˜ˆ์‹œn๊ฒฐ๊ณผ411 ๋ฌธ์ œ ํ’€์ด์ด๋Ÿฐ ๋ฌธ์ œ์˜ ์ ‘๊ทผ์€ n์ด 1์ผ๋•Œ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ ‘๊ทผํ•ด์•ผํ•œ๋‹ค.ํ•˜์ง€๋งŒ ์„ธ๋กœ๊ฐ€ 3์œผ๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ n์ด ํ™€์ˆ˜์ผ ๋•Œ, ํƒ€์ผ์„ ๋ชจ๋‘ ์ฑ„์šฐ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 0์ด๋‹ค.๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ง์ˆ˜ ๋‚ด์šฉ๋งŒ ๊ณ ๋ คํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿผ n=2 ์ผ ๋•Œ๋Š” 3๊ฐœ๋กœ ์ฃผ์–ด์ง„ ์˜ˆ์‹œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. n=4์ผ ๋•Œ๋Š” 11๊ฐœ๋กœ ์„ค๋ช…์— ๋‚˜์™€์žˆ๋‹ค.์—ฌ๊ธฐ์„œ ์ฃผ์˜ ๊นŠ๊ฒŒ ๋ด์•ผํ•  ์ ์€ n=4์ผ ๋•Œ, n=2์ผ ๋•Œ..
[์ž๋ฃŒ๊ตฌ์กฐ] ์Šคํƒ(Stack)
ยท
๐Ÿ“š STUDY/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜
๐Ÿ“ฆ ์Šคํƒ(Stack)์Šคํƒ(Stack)์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๋„ฃ๊ณ  ๊บผ๋‚ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํ›„์ž…์„ ์ถœ(LIFO, Last In First Out)๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜์—ฌ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.์˜ˆ๋ฅผ๋“ค์–ด, ์ ‘์‹œ๋ฅผ ์Œ“์•„๋‘๊ณ  ์œ„์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๐Ÿ“ ๋™์ž‘ ๋ฐฉ์‹์Šคํƒ์˜ ํ•ต์‹ฌ์€ “์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ , ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ธ๋‹ค.” ์ž…๋‹ˆ๋‹ค. 1. ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€(push)์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.2. ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ(pop)๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.3. ์Šคํƒ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ํ™•์ธ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.4. ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ธ๊ฐ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.JavaScrip..
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) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ–๋Š”..