๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป DEV/Algorithms & Data Structure7

[์•Œ๊ณ ๋ฆฌ์ฆ˜][C++] ํŠธ๋ผ์ด (Trie) ๋ฐฑ์ค€ 14425: ๋ฌธ์ž์—ด ์ง‘ํ•ฉ https://www.acmicpc.net/problem/14425 14425๋ฒˆ: ๋ฌธ์ž์—ด ์ง‘ํ•ฉ ์ฒซ์งธ ์ค„์— ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜ N๊ณผ M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ์ง‘ํ•ฉ S์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด๋“ค์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ M๊ฐœ์˜ ์ค„์—๋Š” ๊ฒ€์‚ฌํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ž์—ด๋“ค์ด ์ฃผ์–ด www.acmicpc.net ์ ‘๊ทผ ๋ฐฉํ–ฅ ๋ฐ ๋””๋ฒ„๊น… ํŠธ๋ผ์ด ๊ตฌํ˜„ - find ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํ›จ์”ฌ ์‹œ๊ฐ„๋„ ๋น ๋ฅด๊ณ  ๊ตฌํ˜„๋„ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์ด๋‚˜, ํŠธ๋ผ์ด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ•™์Šตํ•˜๋Š” ์ฐจ์›์—์„œ ํŠธ๋ผ์ด๋กœ ๊ตฌํ˜„ - ๊ฐœ๋ณ„ ๋…ธ๋“œ๋ฅผ ๋‹ด๋‹นํ•  struct ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ , ๋‹จ์–ด๊ฐ€ ์ž…๋ ฅ๋  ๋•Œ๋งˆ๋‹ค ๊ฐ ๊ธ€์ž๋ฅผ ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ํ˜•์„ฑ - ๋‹จ์–ด๊ฐ€ ์ง‘ํ•ฉ์— ์กด์žฌํ•˜๋Š”์ง€ ์ฐพ์„ ๋•Œ๋Š” ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ - ์ค‘์š”ํ•œ ์ ์€, ํŠธ๋ฆฌ๋ฅผ.. 2024. 3. 13.
[์•Œ๊ณ ๋ฆฌ์ฆ˜][C++] ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ ๋ฐฑ์ค€ 2042: ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ https://www.acmicpc.net/problem/2042 2042๋ฒˆ: ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ ์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 1,000,000)๊ณผ M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000) ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. M์€ ์ˆ˜์˜ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋Š” ํšŸ์ˆ˜์ด๊ณ , K๋Š” ๊ตฌ๊ฐ„์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ํšŸ์ˆ˜์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N+1๋ฒˆ์งธ ์ค„ www.acmicpc.net ์ ‘๊ทผ ๋ฐฉํ–ฅ ๋ฐ ๋””๋ฒ„๊น… "๋ฒ”์œ„" ๋ณ„ ์žฌ๊ท€ ํ•ธ๋“ค๋ง์— ์ง‘์ค‘ [1] ์ฐพ๋Š” ๋ฒ”์œ„๋ฅผ ๋ฏธํฌํ•จํ•˜๋Š” ํ˜ธ์ถœ์ผ ๋•Œ [2] ์ฐพ๋Š” ๋ฒ”์œ„๋ฅผ ์ „๋ถ€ ํฌํ•จํ•˜๋Š” ํ˜ธ์ถœ์ผ ๋•Œ [3] ์ฐพ๋Š” ๋ฒ”์œ„๋ฅผ ์ผ๋ถ€ ํฌํ•จํ•˜๋Š” ํ˜ธ์ถœ์ผ ๋•Œ ์ •์ˆ˜ํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž… ๊ณ ๋ฏผ - ๋ฌธ์ œ ์กฐ๊ฑด ์ค‘ "์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ชจ๋“  ์ˆ˜๋Š” -263๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 263-1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™.. 2024. 3. 13.
[์•Œ๊ณ ๋ฆฌ์ฆ˜][C++] ์šฐ์„ ์ˆœ์œ„ํ, ํž™ํ ๋ฐฑ์ค€ 11279: ์ตœ๋Œ€ ํž™ https://www.acmicpc.net/problem/11279 11279๋ฒˆ: ์ตœ๋Œ€ ํž™ ์ฒซ์งธ ์ค„์— ์—ฐ์‚ฐ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ x๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋งŒ์•ฝ x๊ฐ€ ์ž์—ฐ์ˆ˜๋ผ๋ฉด ๋ฐฐ์—ด์— x๋ผ๋Š” ๊ฐ’์„ ๋„ฃ๋Š”(์ถ”๊ฐ€ํ•˜๋Š”) ์—ฐ์‚ฐ์ด๊ณ , x๊ฐ€ 0 www.acmicpc.net ์ ‘๊ทผ ๋ฐฉํ–ฅ ๋ฐ ๋””๋ฒ„๊น… [1] ์ตœ๋Œ€ํž™ ๊นก๊ตฌํ˜„ - insert(), pop() ์‹œ ํŠธ๋ฆฌ๋ฅผ ์ƒ/ํ•˜๋‹จ์œผ๋กœ ํƒ์ƒ‰ํ•˜์—ฌ ์•„์ดํ…œ ๊ฐ„ ๋Œ€์†Œ๋น„๊ต๋ฅผ ํ†ตํ•ด ๊ฐ’ swap ํ•˜๋Š” ์ „์—ญ ํ•จ์ˆ˜ ์ƒ์„ฑ - insert() ์‹œ์—๋Š” ๊ฐ’์„ ์ตœํ•˜๋‹จ ๋…ธ๋“œ์— ์ถ”๊ฐ€ํ•˜์—ฌ, ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ๋‚˜๋ณด๋‹ค ๊ฐ’์ด ๋‚˜๋ณด๋‹ค ํด ๋•Œ๊นŒ์ง€ swap - pop() ์‹œ์—๋Š” ์ตœ์ƒ๋‹จ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ , ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋‚˜๋ณด๋‹ค ๊ฐ’์ด ์ž‘.. 2024. 3. 11.
[์•Œ๊ณ ๋ฆฌ์ฆ˜][C++] Dijkstra (๋‹ค์ต์ŠคํŠธ๋ผ) / ์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ ๋ฐฑ์ค€ 5972 : ํƒ๋ฐฐ ๋ฐฐ์†ก https://www.acmicpc.net/problem/5972 5972๋ฒˆ: ํƒ๋ฐฐ ๋ฐฐ์†ก ๋†๋ถ€ ํ˜„์„œ๋Š” ๋†๋ถ€ ์ฐฌํ™์ด์—๊ฒŒ ํƒ๋ฐฐ๋ฅผ ๋ฐฐ๋‹ฌํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ, ๊ฐˆ ์ค€๋น„๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ‰ํ™”๋กญ๊ฒŒ ๊ฐ€๋ ค๋ฉด ๊ฐ€๋Š” ๊ธธ์— ๋งŒ๋‚˜๋Š” ๋ชจ๋“  ์†Œ๋“ค์—๊ฒŒ ๋ง›์žˆ๋Š” ์—ฌ๋ฌผ์„ ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ˜„์„œ๋Š” www.acmicpc.net ์ ‘๊ทผ ๋ฐฉํ–ฅ ๋ฐ ๋””๋ฒ„๊น… [1] ์ตœ์ดˆ ์ ‘๊ทผ - N * N ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ •์ ๋ณ„๋กœ ์—ฐ๊ฒฐ๋œ ์ •์ ๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ํ‘œ์‹œํ•˜๊ณ , ์ดํ›„ ์šฐ์„ ์ˆœ์œ„ํ์™€ Visited ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๊ณ ์ž ํ•จ - ํ•ด๋‹น ์ ‘๊ทผ์œผ๋กœ TC ๋‹ต์€ ๋‚˜์™”์œผ๋‚˜, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 128 MB ๋กœ ์ œํ•œ๋˜์–ด ์žˆ์–ด์„œ ์•ฝ 3% ๋Œ€๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ํ„ฐ์ง - ๋‹น์—ฐํ•จ.. N ์˜ ์ตœ๋Œ€๊ฐ’์ด 50000 ์ด๋ผ๋Š” ์ ์„ ์ œ๋Œ€๋กœ ํ™•์ธํ•˜์ง€ ์•Š์Œ [2] ์ˆ˜์ •๋œ ์ ‘.. 2024. 3. 11.
[Algorithms] ์‹œ๊ฐ„๋ณต์žก๋„ (Big-O Notation) ๋ž€? โœจ ์‹œ๊ฐ„๋ณต์žก๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋กœ์ง์„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•  ๋•Œ, ์ž…๋ ฅ๊ฐ’์— ๋”ฐ๋ผ ์ถœ๋ ฅ๊ฐ’์„ ๋‚ด๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์˜ ๋น„์œจ์„ ์˜๋ฏธํ•œ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๋ณดํ†ต Big-O Notation (Big-O ํ‘œ๊ธฐ๋ฒ•) ์„ ํ™œ์šฉํ•˜์—ฌ ๋‚˜ํƒ€๋‚ธ๋‹ค. Big-O Notation ์ด์™ธ์—๋„ Big-Omega(big-Ω),Big-Theta(big-Θ) Notation ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค. Big-Omega๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํšจ์œจ์„ ํ•˜ํ•œ์„ ์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜๊ณ , Big-Theta๋Š” ์ƒํ•œ์„ ๊ณผ ํ•˜ํ•œ์„ ์˜ ์‚ฌ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค. ์ด์— ๋น„ํ•ด Big-O ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํšจ์œจ์„ ์ƒํ•œ์„  ๊ธฐ์ค€์œผ๋กœ ํ‘œ๊ธฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค. ์ฆ‰, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์˜ ์ตœ๋Œ€๊ฐ’์„ ํ‘œ๊ธฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์„ฑ ์ ๊ฒ€์— ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ์•„์šธ๋Ÿฌ ๊ณต๊ฐ„ ๋ณต์žก๋„ (Space Complexity).. 2021. 7. 8.
[Data Structure] ์Šคํƒ(Stack) ๊ณผ ํ(Queue) ์Šคํƒ๊ณผ ํ๋Š” ๊ฐ€์žฅ ์ž์ฃผ ํ™œ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. โœจ ์Šคํƒ(Stack) ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์ค‘์— ๋‚˜๊ฐ€๋Š” ํ˜•์‹์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, ์ž…์ถœ๊ตฌ๊ฐ€ ํ•˜๋‚˜์ด๋‹ค. ํ›„์ž…์„ ์ถœ (LIFO; Last in First Out) ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ผ์–ด๋‚˜๋Š” ์œ„์น˜๋ฅผ Top ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋น„์–ด์žˆ๋Š” ์Šคํƒ์—์„œ ์›์†Œ๋ฅผ ์ถ”์ถœํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋Š” stack underflow, ์Šคํƒ์ด ๋„˜์น˜๋Š” ๊ฒฝ์šฐ๋Š” stack overflow ์ด๋‹ค. โœจ์Šคํƒ ์˜ˆ์‹œ ๋ชจ๋ฐ”์ผ ํ™”๋ฉด์˜ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ๋ณด๊ณ  ์žˆ๋Š” ํ™”๋ฉด์ด Top ์ด๋‹ค. ๋‹ค์Œ ํ™”๋ฉด ํด๋ฆญ ์‹œ, ์ƒˆ ํ™”๋ฉด์„ Stack ์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ด๋™ํ•œ๋‹ค. ์ด์ „ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐˆ ์‹œ, ํ˜„์žฌ ํ™”๋ฉด์„ Stack ์—์„œ ์ง€์šฐ๊ณ  ์ด๋™ํ•œ๋‹ค. โœจ ํ(Queue) ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ํ˜•์‹์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, .. 2021. 7. 7.
[Algorithm] ๊นŠ์ด์šฐ์„ ํƒ์ƒ‰(DFS) ๊ณผ ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰(BFS) DFS ์™€ BFS ๋Š” ๊ฐ๊ฐ Depth-First Search ์™€ Breadth-First Search ๋กœ, ๊นŠ์ด์šฐ์„ ํƒ์ƒ‰๊ณผ ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰์„ ๋œปํ•œ๋‹ค. ๋‘˜์˜ ์ฐจ์ด์ ๊ณผ ์ฝ”๋“œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. BFS ๊ทธ๋ž˜ํ”„ ์ž๋ฃŒ๊ตฌ์กฐํ˜•์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋…ธ๋“œ๋ถ€ํ„ฐ ์šฐ์„ ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ํ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ตฌํ˜„ ๋‹จ๊ณ„ ํ์— ํƒ์ƒ‰ ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. ํ์˜ front ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ๋ฐฉ๋ฌธ ํ‘œ์‹œ๋ฅผ ํ•˜๊ณ , popleft() ๋ฅผ ํ•œ๋‹ค. ํ˜„์žฌ ๋ฐฉ๋ฌธํ•˜๊ณ  ์žˆ๋Š” ๋…ธ๋“œ์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ ๋…ธ๋“œ๋ฅผ ํ์— ๋„ฃ๋Š”๋‹ค ํ˜„์žฌ ๋ฐฉ๋ฌธํ•˜๊ณ  ์žˆ๋Š” ๋…ธ๋“œ์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ํ์˜ front ์„ ๊บผ๋‚ธ๋‹ค ๋ฐ˜๋ณต ์‹คํ–‰ํ•˜์—ฌ ํ๊ฐ€ ์™„์ „ํžˆ ๋นŒ ๋•Œ ์ข…๋ฃŒํ•œ๋‹ค from collections import deq.. 2021. 6. 30.