๐Ÿ’ป My Work/๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ Algorithm 9

๋ฐฑ์ค€ - 2056 : ์ž‘์—…

https://www.acmicpc.net/problem/2056 2056๋ฒˆ: ์ž‘์—… ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ž‘์—… N๊ฐœ (3 โ‰ค N โ‰ค 10000)๊ฐ€ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์ž‘์—…๋งˆ๋‹ค ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„(1 โ‰ค ์‹œ๊ฐ„ โ‰ค 100)์ด ์ •์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋ช‡๋ช‡ ์ž‘์—…๋“ค ์‚ฌ์ด์—๋Š” ์„ ํ–‰ ๊ด€๊ณ„๋ผ๋Š” ๊ฒŒ ์žˆ์–ด์„œ, ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด www.acmicpc.net ์—ฐ์‚ฐ - ์ตœ์†Œ์‹œ๊ฐ„์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์—, dp๋ฅผ ๊ฐฑ์‹ ํ•  ๋•Œ max๋กœ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. - ๋ชจ๋“  ์ž‘์—…์ด ๋๋‚ฌ์„ ๋•Œ์˜ ์ตœ์†Œ์‹œ๊ฐ„์œผ๋กœ ๊ฐฑ์‹ ์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. queue ๊ฐ€ ๋น„์—ˆ์„ ๋•Œ ์ฆ‰, ๋ชจ๋“  ์ž‘์—…์ด ๋๋‚ฌ์„ ๋•Œ์˜ ๋ฐ”๋กœ ์ง์ „์˜ for๋ฌธ์œผ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์‹œ์ ์—์„œ ๊ฐฑ์‹ ์„ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด, ๋‹ค์Œ์— ํƒ์ƒ‰ํ•  node๋Š” ์—†์œผ๋‹ˆ๊นŒ ์ด ์‹œ์ ์ด ๋งˆ์ง€๋ง‰ ์ž‘์—…์ด ๋œ๋‹ค. #include #include #inc..

๋ฐฑ์ค€ - 1516 : ๊ฒŒ์ž„ ๊ฐœ๋ฐœ

https://www.acmicpc.net/problem/1516 1516๋ฒˆ: ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์ฒซ์งธ ์ค„์— ๊ฑด๋ฌผ์˜ ์ข…๋ฅ˜ ์ˆ˜ N(1 โ‰ค N โ‰ค 500)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ ๊ฑด๋ฌผ์„ ์ง“๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ๊ทธ ๊ฑด๋ฌผ์„ ์ง“๊ธฐ ์œ„ํ•ด ๋จผ์ € ์ง€์–ด์ ธ์•ผ ํ•˜๋Š” ๊ฑด๋ฌผ๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฑด๋ฌผ์˜ ๋ฒˆํ˜ธ๋Š” 1๋ถ€ www.acmicpc.net ์ž…๋ ฅ i๋ฒˆ์งธ ๊ฑด๋ฌผ์ด ์ง€์–ด์ง€๊ธฐ ์œ„ํ•ด ๋จผ์ € ์ง€์–ด์ ธ์•ผํ•˜๋Š” ๊ฑด๋ฌผ์„ ์ž…๋ ฅํ•  ๋•Œ, -1์ด ๋“ค์–ด์˜ค๋ฉด ๋ฐ”๋กœ ์ž…๋ ฅ์—์„œ ๋น ์ ธ๋‚˜์™€์•ผ ํ•œ๋‹ค. ์—ฐ์‚ฐ - ์ด ๋ฌธ์ œ์—์„œ ์œ„์ƒ์ •๋ ฌ๊ณผ ํ•จ๊ป˜ DP๋ฅผ ํ™œ์šฉํ•  ๋•Œ์—”, ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๋Š” ๋‹จ๊ณ„์—์„œ ๊ฐ ๊ฑด๋ฌผ์˜ dp์—” ๊ฐ ๊ฑด๋ฌผ์ด ์ง€์–ด์ง€๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ„์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ค€๋‹ค. ๋ˆ„์ ๋˜๋Š” ์‹œ๊ฐ„์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. - ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ, max๋กœ ๊ฐฑ์‹ ์„ ํ•ด์ค€๋‹ค. * ์ตœ์†Œ ์‹œ๊ฐ„ = ๊ฑด๋ฌผ์„ ๋™์‹œ์— ..

MST

ํฌ๋ฃจ์Šค์นผ * tuple ๋กœ ์ €์žฅํ•œ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด, ๊ฐ€์ค‘์น˜๊ฐ€ ์งง์€ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ ์žŠ์ง€๋ง๊ธฐ #include #include #include #include using namespace std; typedef tuple tp; vector parent; int findParent(int v) { if (parent[v] < 0) // ๊ฐ’์ด ์Œ์ˆ˜๋ผ๋Š” ๊ฒƒ์€, ๋ฃจํŠธ(์ตœ์ƒ์œ„ ๋ถ€๋ชจ) ์ฐพ์Œ return v; return parent[v] = findParent(parent[v]); // ๊ทธ๋ž˜ํ”„ ์••์ถ•, ํ•ด๋‹น ์ •์ ์˜ ๋ถ€๋ชจ ์ฐพ๊ธฐ } bool unionNodes(int x, int y) { // ๊ฐ ๋…ธ๋“œ์˜ ๋ถ€๋ชจ๋ฅผ ์ฐพ์Œ int px = findParent(x); int py = findParent(y); // ๋ถ€๋ชจ๊ฐ€ ๊ฐ™๋‹ค..

๋ฐฑ์ค€ - 4386 : ๋ณ„์ž๋ฆฌ ๋งŒ๋“ค๊ธฐ

์†Œ์ˆ˜์  ๋‘˜์งธ์ž๋ฆฌ๊นŒ์ง€ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด, ์•„๋ž˜์™€ ๊ฐ™์ด ์„ ์–ธ ํ›„ cout ํ•˜๋ฉด ๋œ๋‹ค. cout next_w) { dist[next] = next_w; pq.push({next_w, next}); } } } return sum; } /* * ๋ชจ๋“  ๋ณ„์ž๋ฆฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ • ํ›„, ๊ฐ ๋ณ„๋งˆ๋‹ค์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๊ทธ๋ž˜ํ”„๋ฅผ ์™„์„ฑ * ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (ํ”„๋ฆผ) ์ˆ˜ํ–‰ */ int main() { int v; double a, b; // ์ž…๋ ฅ cin >> v; vector star(v + 1); // first : x, second : y for (int i = 1; i > a >> b; star[i] = { a,b }; } // ๊ฐ€์ค‘์น˜ ๊ณ„์‚ฐ vector graph(v + 1, vector(v + 1)); // f..

๋ฐฑ์ค€ - 9252 : LCS 2

https://www.acmicpc.net/problem/9252 9252๋ฒˆ: LCS 2 LCS(Longest Common Subsequence, ์ตœ์žฅ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด)๋ฌธ์ œ๋Š” ๋‘ ์ˆ˜์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ชจ๋‘์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด์ด ๋˜๋Š” ์ˆ˜์—ด ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ACAYKP์™€ CAPCAK์˜ LCS๋Š” ACAK๊ฐ€ ๋œ๋‹ค. www.acmicpc.net 2์ฐจ์› ๋ฐฐ์—ด๋กœ, ๋ฌธ์ž๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ์™€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ, ๋ถ€๋ถ„ ์ˆ˜์—ด์ด ๋˜๋Š” ์ˆ˜์—ด ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์œผ๋กœ dp๋ฅผ ์ฑ„์›Œ๋‚˜๊ฐ€๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  string ๊ทธ๋Œ€๋กœ dp์— ์ €์žฅํ•ด๋ฒ„๋ฆฌ๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๊ธฐ ๋•Œ๋ฌธ์—,, dp๊ฐ€ ์ฑ„์›Œ์ง„ ์ˆœ์„œ๋ฅผ ์—ญ์ถ”์ ํ•˜์—ฌ lcs๋ฅผ ์™„์„ฑํ•ด์•ผ ํ•œ๋‹ค. #include #include #include using namespace std; const ..

๋ฐฑ์ค€ - 1644 : ์†Œ์ˆ˜์˜ ์—ฐ์†ํ•ฉ

https://www.acmicpc.net/problem/1644 1644๋ฒˆ: ์†Œ์ˆ˜์˜ ์—ฐ์†ํ•ฉ ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 4,000,000) www.acmicpc.net * ์ฃผ์˜! * ์šฐ์„  4,000,000๊นŒ์ง€ ๋จผ์ € ๊ฑธ๋Ÿฌ์ค€ ํ›„์—, 2๋ถ€ํ„ฐ n๊นŒ์ง€ ํ•„์š”ํ•œ ์†Œ์ˆ˜๋ฅผ ์ €์žฅํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. for (int i = 2; i * i

๋ฐฑ์ค€ - 18115 : ์นด๋“œ ๋†“๊ธฐ

https://www.acmicpc.net/problem/18115 18115๋ฒˆ: ์นด๋“œ ๋†“๊ธฐ ์ˆ˜ํ˜„์ด๋Š” ์นด๋“œ ๊ธฐ์ˆ ์„ ์—ฐ์Šตํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜ํ˜„์ด์˜ ์†์— ๋“ค๋ฆฐ ์นด๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋‚ด๋ ค๋†“์•„ ๋ฐ”๋‹ฅ์— ์Œ“์œผ๋ ค๊ณ  ํ•œ๋‹ค. ์ˆ˜ํ˜„์ด๊ฐ€ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์€ ๋‹ค์Œ 3๊ฐ€์ง€๋‹ค. ์ œ์ผ ์œ„์˜ ์นด๋“œ 1์žฅ์„ ๋ฐ”๋‹ฅ์— ๋‚ด๋ ค๋†“๋Š”๋‹ค. www.acmicpc.net ์•ž๊ณผ ๋’ค๋ฅผ ๋‹ค ์ฐธ์กฐํ•ด์•ผํ•  ๋•Œ ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” STL์ธ deque๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์นด๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. #include #include #include #include using namespace std; deque prac(int n, vector& tech) { deque card; // ์ฒ˜์Œ ์นด๋“œ ์ƒํƒœ for (int i = 1; i > n; vector tech(n + 1); for (int..

๋ฐฑ์ค€ - 1620 : ๋‚˜๋Š”์•ผ ํฌ์ผ“๋ชฌ ๋งˆ์Šคํ„ฐ ์ด๋‹ค์†œ

https://www.acmicpc.net/problem/1620 1620๋ฒˆ: ๋‚˜๋Š”์•ผ ํฌ์ผ“๋ชฌ ๋งˆ์Šคํ„ฐ ์ด๋‹ค์†œ ์ฒซ์งธ ์ค„์—๋Š” ๋„๊ฐ์— ์ˆ˜๋ก๋˜์–ด ์žˆ๋Š” ํฌ์ผ“๋ชฌ์˜ ๊ฐœ์ˆ˜ N์ด๋ž‘ ๋‚ด๊ฐ€ ๋งž์ถฐ์•ผ ํ•˜๋Š” ๋ฌธ์ œ์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ ธ. N๊ณผ M์€ 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ธ๋ฐ, ์ž์—ฐ์ˆ˜๊ฐ€ ๋ญ”์ง€๋Š” ์•Œ์ง€? ๋ชจ๋ฅด๋ฉด www.acmicpc.net ์ˆœ์„œ๊ฐ€ ์ƒ๊ด€์—†๊ธฐ ๋•Œ๋ฌธ์— unordered_map์„ ํ™œ์šฉํ•˜์˜€๋‹ค. ์ž๊พธ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค๋ฉด ๊ผญ ์ถ”๊ฐ€ํ•˜๊ธฐ! cin.tie(NULL); ios_base::sync_with_stdio(false); #include #include #include #include using namespace std; int main() { cin.tie(NULL); ios_base::sync_w..

๋ฐฑ์ค€ - 17478 : ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ๋ญ”๊ฐ€์š”?

https://www.acmicpc.net/problem/17478 ๋‹จ์ˆœํ•œ ์žฌ๊ท€๋ฌธ์ œ์ด๋‹ค.๐Ÿ™‚ ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ๊ธฐ์ €์กฐ๊ฑด์—์„  ๊ผญ return; #include using namespace std; int N; void print(int n) { if (n == 0) { for (int j = n; j < N; j++) cout