๐Ÿ“ Computer Science

    [C++] ๋ฌธ์ž์—ด

    [C++] ๋ฌธ์ž์—ด

    ๋ฌธ์ž์—ด 1. KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์„ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. 1) ๊ธฐ๋ณธ ์›๋ฆฌ ์ ‘๋‘์‚ฌ(prefix)์™€ ์ ‘๋ฏธ์‚ฌ(suffix)๋ฅผ ์ด์šฉํ•ด pi[i] ๋ฐฐ์—ด์„ ๊ตฌํ•œ ๋’ค ํ™œ์šฉํ•œ๋‹ค. pi[i] ๋ฐฐ์—ด์€ 0~i๊นŒ์ง€์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์—์„œ prefix=suffix๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์˜ ๊ธธ์ด์ด๋‹ค. ์ด๋•Œ, prefix๊ฐ€ 0~i๊นŒ์ง€์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์œผ๋ฉด ์•ˆ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ์ž์—ด ABAABAB๋กœ pi[i] ๋ฐฐ์—ด์„ ๊ตฌํ•ด๋ณด์ž. i ๋ถ€๋ถ„ ๋ฌธ์ž์—ด (0~i) pi[i] 0 A 0 1 AB 0 2 ABA 1 3 ABAA 1 4 ABAAB 2 5 ABAABA 3 6 ABAABAB 2 ๊ทธ๋ ‡๋‹ค๋ฉด ์ด pi[i] ๋ฐฐ์—ด์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์„ ํšจ์œจ์ ์œผ๋กœ ํ•  ๊ฒƒ์ธ๊ฐ€? ๋ฌธ์ž์—ด ABCDABCDABEE์—์„œ ๋ฌธ์ž..

    ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…(Cloud Computing)๊ณผ AWS

    ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…(Cloud Computing)๊ณผ AWS

    1. ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…(Cloud Computing) ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ „์‚ฐ ์ž์›(์„œ๋ฒ„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋„คํŠธ์›Œํ‚น ๋“ฑ)์„ ๊ณต์œ ํ•˜๋Š” ๊ธฐ์ˆ ๊ณผ ๋„๊ตฌ์˜ ์ง‘ํ•ฉ์ด๋‹ค. ์–ด๋””์„œ๋“  ํ•˜๋Š˜์„ ๋ดค์„ ๋•Œ ๊ตฌ๋ฆ„(Cloud)์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์–ด๋””์„œ๋“  ์ž์›์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. 1) ์™œ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์„ ์‚ฌ์šฉํ• ๊นŒ? 1. ๋น„์šฉ ์‚ฌ์šฉํ•œ ๋งŒํผ๋งŒ ์ง€๋ถˆํ•œ๋‹ค. ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์ž…ํ•˜๊ฑฐ๋‚˜ ์˜จ์‚ฌ์ดํŠธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ์„ค์น˜ ๋ฐ ์šด์˜ํ•˜๋Š” ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์ดˆ๊ธฐ ํˆฌ์ž ๋น„์šฉ ๋ฐ ์šด์˜ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์†๋„ ๋Œ€๋ถ€๋ถ„ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ์„œ๋น„์Šค๋Š” ์ฃผ๋ฌธํ˜• ์…€ํ”„์„œ๋น„์Šค๋กœ ์ œ๊ณต๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ์—…์— ๋งŽ์€ ์œ ์—ฐ์„ฑ์ด ์ œ๊ณต๋˜๋ฉฐ ๊ธฐ์—…์€ ์šฉ๋Ÿ‰ ๊ณ„ํš ๋ถ€๋‹ด์„ ๋œ ์ˆ˜ ์žˆ๋‹ค. 3. ๋›ฐ์–ด๋‚œ ํ™•์žฅ์„ฑ ํ•„์š”ํ•œ ๋•Œ์— ์ ์ ˆํ•œ ์ง€๋ฆฌ์  ์œ„์น˜์—์„œ ๋Œ€๋žต์ ์ธ ์ปดํ“จํ„ฐ ์„ฑ๋Šฅ, ์Šคํ† ๋ฆฌ์ง€..

    [C++] ๋„คํŠธ์›Œํฌ ์œ ๋Ÿ‰(Network Flow)

    [C++] ๋„คํŠธ์›Œํฌ ์œ ๋Ÿ‰(Network Flow)

    ๋„คํŠธ์›Œํฌ ์œ ๋Ÿ‰(Network Flow) ๊ทธ๋ž˜ํ”„ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋กœ ๋„คํŠธ์›Œํฌ ์œ ๋Ÿ‰์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  ๋จผ์ € ์ƒˆ๋กœ์šด ์šฉ์–ด์™€ ์œ ๋Ÿ‰ ๊ทธ๋ž˜ํ”„์˜ ํŠน์ง•๋ถ€ํ„ฐ ์•Œ์•„์•ผ ํ•œ๋‹ค. ์œ ๋Ÿ‰ ๊ทธ๋ž˜ํ”„๋Š” ๋ณดํ†ต ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋ž˜ํ”„์˜ ๊ฐ„์„  ๊ฑฐ๋ฆฌ, ์‹œ๊ฐ„์ด๋‚˜ ๊ฐ€์ค‘์น˜ ๋Œ€์‹  ์šฉ๋Ÿ‰(Capacity)์ด๋ผ ํ•œ๋‹ค. ๋‘ ์ •์  u, v๋ฅผ ์žˆ๋Š” ๊ฐ„์„  (u, v)๊ฐ€ ์žˆ์„ ๋•Œ, u์—์„œ v๋กœ ๊ฐ„์„ ์˜ ์šฉ๋Ÿ‰ ์ดํ•˜๋งŒํผ์˜ ์œ ๋Ÿ‰(flow)์„ ํ˜๋ ค๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ๋‚ด ์„œ๋กœ ๋‹ค๋ฅธ ์†Œ์Šค(S, Source) ์ •์ ๊ณผ ์‹ฑํฌ(T, Sink) ์ •์ ์ด ์žˆ๋Š”๋ฐ, ์†Œ์Šค ์ •์ ์€ ์œ ๋Ÿ‰์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ์†Œ์Šค ์ •์  ์™ธ ์ •์ ๋“ค์€ ์ž์‹ ์ด ๋ฐ›์€ ์œ ๋Ÿ‰๋งŒํผ๋งŒ ๋‹ค์‹œ ํ˜๋ ค๋ณด๋‚ธ๋‹ค. ๊ฐ ๊ฐ„์„ ์— ํ๋ฅด๋Š” ์œ ๋Ÿ‰์€ ๊ทธ ๊ฐ„์„ ์˜ ์šฉ๋Ÿ‰์„ ๋„˜์„ ์ˆ˜ ์—†๋‹ค. ๊ฐ„์„  (u, v)๋กœ ์œ ๋Ÿ‰์ด ํ๋ฅด๊ณ  ์žˆ๋‹ค๋ฉด ์—ญ๋ฐฉํ–ฅ์ธ ๊ฐ„์„ (v,..

    [C++] ํฌ์†Œ ํ…Œ์ด๋ธ”(Sparse Table)

    ํฌ์†Œ ํ…Œ์ด๋ธ”(Sparse Table) ๋ฐฐ์—ด์ด ์ •์ ์ด์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋ฐฐ์—ด ๋‚ด์šฉ์ด ์ˆ˜์ •๋˜๋ฉด ์•ˆ ๋œ๋‹ค. ๋ฐฐ์—ด์˜ ์•„์ด๋””์–ด๋Š” ๋ถ„ํ•  ์ •๋ณต๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๋” ๋น ๋ฅด๋‹ค. ๊ธฐ๋ณธ ์›๋ฆฌ ๋ชจ๋“  ์ •์ ์˜ ๊ฐ„์„ ์ด 1๊ฐœ์ธ ์œ ํ–ฅ ๊ทธ๋ž˜ํ”„๊ฐ€ ์กด์žฌํ•  ๋•Œ ์–ด๋–ค ์ •์ ์—์„œ ์‹œ์ž‘ํ•ด k๋ฒˆ ์ด๋™์„ ํ•˜๋ฉด ๋„์ฐฉํ•˜๋Š” ์ ์€ ์œ ์ผํ•˜๋‹ค. ์ด๋•Œ k๋ฒˆ์„ ์ผ์ผ์ด ๋งค๋ฒˆ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ๋„์ฐฉ์ ์„ ๊ณ„์‚ฐํ•  ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ k๊ฐ’์ด ์ปค์งˆ์ˆ˜๋ก ์‹œ๊ฐ„๋„ ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ์–ด๋–ค ์ •์ ์˜ n๋ฒˆ ์ด๋™ํ–ˆ์„ ๋•Œ ๋„์ฐฉ์ , ๋˜ ๊ทธ ๋„์ฐฉ์ ์„ ์ •์ ๋งˆ๋‹ค ๋‹ค ๊ธฐ์–ตํ•˜๋Š” ๋ฐฐ์—ด์ด ์žˆ๋‹ค๋ฉด ๋„์ฐฉ์ ์„ ๋งค์šฐ ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋ฐฐ์—ด์€ ์–ด๋–ป๊ฒŒ ๊ฐ€์ ธ์•ผ ํ• ๊นŒ? 1์นธ, 2์นธ, 4์นธ, 8์นธ, 16์นธ,... ๋“ฑ 2์ง„์ˆ˜๋ฅผ ์ด์šฉํ•ด 2์ง„์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์ด๋™ ๊ฐ’์„ ๋ชจ๋‘ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋™ ํšŸ์ˆ˜ k๋ฅผ 2..

    [C++] ์œ„์ƒ ์ •๋ ฌ(Topological Sort)

    [C++] ์œ„์ƒ ์ •๋ ฌ(Topological Sort)

    ์œ„์ƒ ์ •๋ ฌ(Topological Sort) ์œ„์ƒ ์ •๋ ฌ์€ ์ˆœ์„œ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋Š” ์ž‘์—…์„ ์ฐจ๋ก€๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋•Œ ๊ทธ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋‹ต์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. DAG(Directed Acyclic Graph)์—๋งŒ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์Šคํƒ๊ณผ ํ๋กœ ๊ตฌํ˜„๋œ๋‹ค. ๊ธฐ๋ณธ ์›๋ฆฌ ์ง„์ž… ์ฐจ์ˆ˜๊ฐ€ 0์ธ ์ •์ ์„ ํ์— ์‚ฝ์ž…ํ•œ๋‹ค. ํ์—์„œ ์›์†Œ๋ฅผ ๊บผ๋‚ด ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๊ฐ„์„ ์„ ์ œ๊ฑฐ ํ›„ ์ง„์ž… ์ฐจ์ˆ˜๊ฐ€ 0์ด ๋œ ์ •์ ์„ ํ์— ์‚ฝ์ž…ํ•œ๋‹ค. ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ 2๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค. ๋ชจ๋“  ์›์†Œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ธฐ ์ „์— ํ๊ฐ€ ๋นˆ๋‹ค๋ฉด ์‚ฌ์ดํด์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋ชจ๋“  ์›์†Œ๋ฅผ ๋ฐฉ๋ฌธํ–ˆ๋‹ค๋ฉด ํ์—์„œ ๊บผ๋‚ธ ์ˆœ์„œ๊ฐ€ ์œ„์ƒ ์ •๋ ฌ์˜ ๊ฒฐ๊ณผ์ด๋‹ค. ๋ฌธ์ œ https://www.acmicpc.net/problem/1766 1766๋ฒˆ: ๋ฌธ์ œ์ง‘ ์ฒซ์งธ ์ค„์— ๋ฌธ์ œ์˜ ์ˆ˜ N(1 ..

    [C++] ํŽœ์œ… ํŠธ๋ฆฌ(Fenwick Tree)

    [C++] ํŽœ์œ… ํŠธ๋ฆฌ(Fenwick Tree)

    ํŽœ์œ… ํŠธ๋ฆฌ(Fenwick Tree) ํŽœ์œ… ํŠธ๋ฆฌ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ์ธ๋ฑ์Šค ํŠธ๋ฆฌ(Binary Indexed Tree)๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. ์ˆœ์„œ๋ฅผ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ตฌ๊ฐ„์˜ ๋Œ€ํ‘œ ๊ฐ’์ด๋‚˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋น ๋ฅด๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๊ธฐ๋ณธ ์›๋ฆฌ https://www.acmicpc.net/blog/view/21 ํŽœ์œ… ํŠธ๋ฆฌ (๋ฐ”์ด๋„ˆ๋ฆฌ ์ธ๋ฑ์Šค ํŠธ๋ฆฌ) ๋ธ”๋กœ๊ทธ: ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ (Segment Tree) ์—์„œ ํ’€์–ด๋ณธ ๋ฌธ์ œ๋ฅผ Fenwick Tree๋ฅผ ์ด์šฉํ•ด์„œ ํ’€์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Fenwick Tree๋Š” Binary Indexed Tree๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ์ค„์—ฌ์„œ BIT๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Fenwick Tree๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด, ์–ด๋–ค ์ˆ˜ X www.acmicpc.net ํŽœ์œ… ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„  ์–ด๋–ค ์ˆ˜๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋ƒˆ์„ ๋•Œ ๋งˆ..