๐๋ฌธ์ ํ์ด/๐งฉBaekjoon
[Python] ๋ฐฑ์ค 1922 ๋คํธ์ํฌ ์ฐ๊ฒฐ | ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/1922 1922๋ฒ: ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ด ๊ฒฝ์ฐ์ 1-3, 2-3, 3-4, 4-5, 4-6์ ์ฐ๊ฒฐํ๋ฉด ์ฃผ์ด์ง output์ด ๋์ค๊ฒ ๋๋ค. www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ (์ต์ ์คํจ๋ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ) - ์๋ก์ ์งํฉ์ ์ํ find_parent, union_parent ํจ์ - edges : ๊ฐ์ ๋น์ฉ, ๊ฐ์ a, ๊ฐ์ b๋ฅผ ์ ์ฅํ์ฌ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ์ฅ - parent : ๊ฐ ์ ์ ๋ณ ์งํฉ ์ ๋ณด ์ ์ฅ - ์ ๋ ฌ๋ edges ๋ฅผ ํ๋์ฉ ๋ฐฉ๋ฌธํ๋ฉฐ ์ฌ์ดํด์ด ๋ฐ์ํ์ง ์๋๋ค๋ฉด ๊ฐ์ ์ฐ๊ฒฐ - find_parent(a) != find_parent(b) ์ฆ, ๊ฐ์ ์งํฉ์ ์ํด์์ง ์๋ค ..
[Python] ๋ฐฑ์ค 1647 ๋์ ๋ถํ ๊ณํ | ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/1647 1647๋ฒ: ๋์ ๋ถํ ๊ณํ ์ฒซ์งธ ์ค์ ์ง์ ๊ฐ์ N, ๊ธธ์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. N์ 2์ด์ 100,000์ดํ์ธ ์ ์์ด๊ณ , M์ 1์ด์ 1,000,000์ดํ์ธ ์ ์์ด๋ค. ๊ทธ ๋ค์ ์ค๋ถํฐ M์ค์ ๊ฑธ์ณ ๊ธธ์ ์ ๋ณด๊ฐ A B C ์ธ ๊ฐ์ ์ ์๋ก ์ฃผ์ด์ง๋๋ฐ A๋ฒ www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ์ต์ ์คํจ๋ ํธ๋ฆฌ ๋ฌธ์ (ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ) - edges : ๊ฐ์ ๋น์ฉ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ์ฅํ ๋ฆฌ์คํธ - parent : ์๋ก์ ์งํฉ ์ ๋ณด ์ ์ฅํ ๋ฆฌ์คํธ - find_parent(x) : ์๋ก ๊ฐ์ ์งํฉ์ ์ํด์๋์ง ํ์ธํ๋ ํจ์ - union_parent(a, b) : a, b ์ ์ ์ ๋ํด..
[Python] ๋ฐฑ์ค 1197 ์ต์ ์คํจ๋ ํธ๋ฆฌ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/1197 1197๋ฒ: ์ต์ ์คํจ๋ ํธ๋ฆฌ ์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ V(1 ≤ V ≤ 10,000)์ ๊ฐ์ ์ ๊ฐ์ E(1 ≤ E ≤ 100,000)๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ E๊ฐ์ ์ค์๋ ๊ฐ ๊ฐ์ ์ ๋ํ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ์ธ ์ ์ A, B, C๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ A๋ฒ ์ ์ ๊ณผ B๋ฒ ์ ์ ์ด www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ๋ฌธ์ ์ด๋ฆ์์ ์ ์ ์๋ฏ ์ต์ ์คํจ๋ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ ๋๋ค. - parent : ์๋ก์ ์งํฉ ๊ฐ๋ ์์ ๊ฐ ์ ์ ์ด ์ด๋ ์งํฉ์ ์ํด์๋์ง ์ ๋ณด๋ฅผ ์ ์ฅ - edges : ๊ฐ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ. ๊ฐ์ฅ ์์ ๋น์ฉ์ด ๋ฐ์ํ๋ ๊ฐ์ ๋ถํฐ ์ฐ๊ฒฐํด๋๊ฐ๋ค - find_parent : ํด๋น..
[Python] ๋ฐฑ์ค 18405 ๊ฒฝ์์ ์ ์ผ | BFS
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/18405 18405๋ฒ: ๊ฒฝ์์ ์ ์ผ ์ฒซ์งธ ์ค์ ์์ฐ์ N, K๊ฐ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ์ ์ํ๊ด์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ์ N๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํด๋น ์์น www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ํน์ ์์น๋ฅผ ์ค์ฌ์ผ๋ก ์ํ์ข์ฐ ๋ป์ด๊ฐ๋ฏ๋ก BFS๊ฐ ์ ์ - ์ซ์๊ฐ ์์ ๋ฐ์ด๋ฌ์ค๊ฐ ์ฐ์ ๋์ด์ผ ํ๋ฏ๋ก ๋ฆฌ์คํธ๋ก ๋ฐ์ ์ ๋ ฌ ํ ํ๋ก ์ ํํ๋ค! - ํ์ ๊ฐ์ด ์์ด์ง ๋๊น์ง ๊บผ๋ด ์ํ์ข์ฐ์ ๊ฐ ๊ฐ์ด ๋ค์ ํ์ ๋ฃ๋ ์กฐ๊ฑด์ ๋ถํฉํ๋์ง ํ์ธํ๋ค. - ํ์์ ๊บผ๋ธ ๊ฐ์ ์๊ฐ์ด S์ ๊ฐ๋ค๋ฉด ์ข ๋ฃ - X-1 ํ ..
[Python] ๋ฐฑ์ค 14502 ์ฐ๊ตฌ์ | BFS
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/14502 14502๋ฒ: ์ฐ๊ตฌ์ ์ธ์ฒด์ ์น๋ช ์ ์ธ ๋ฐ์ด๋ฌ์ค๋ฅผ ์ฐ๊ตฌํ๋ ์ฐ๊ตฌ์์์ ๋ฐ์ด๋ฌ์ค๊ฐ ์ ์ถ๋์๋ค. ๋คํํ ๋ฐ์ด๋ฌ์ค๋ ์์ง ํผ์ง์ง ์์๊ณ , ๋ฐ์ด๋ฌ์ค์ ํ์ฐ์ ๋ง๊ธฐ ์ํด์ ์ฐ๊ตฌ์์ ๋ฒฝ์ ์ธ์ฐ๋ ค๊ณ ํ๋ค. ์ฐ๊ตฌ์๋ ํฌ www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - 0์ธ ๊ฐ์ ๋ชจ๋ ์์น๋ฅผ ๋ฆฌ์คํธ (blank)์ ๋ฃ์ด์ cominations ๋ชจ๋์ ์ฌ์ฉํด 3๊ฐ ์์น ๋๋ค ์ถ์ถ(nCr) - ๋ฒ ์ด์ค๊ฐ ๋๋ ๊ธฐ์กด ์ ๋ณด์ ํด๋น ํ๋ 3๊ฐ์ ์์น๋ฅผ 1๋ก ์ค์ ํ๊ณ check ํจ์ ํธ์ถ - check ํจ์ ~ BFS๋ฅผ ์ํ ํ๋ฅผ ์ ์ธํ์ฌ ๊ฐ์ด 2์ธ ์์น๋ฅผ ๋ฃ๋๋ค. ~ ํ์ ๊ฐ์ ํ๋์ฉ ๊บผ๋ด ํด๋น ํ๋ ์์น์์ ์, ..
[Python] ๋ฐฑ์ค 4485 ๋ น์ ์ท ์ ์ ์ ๊ฐ ์ ค๋ค์ง? | ๋ค์ต์คํธ๋ผ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/4485 4485๋ฒ: ๋ น์ ์ท ์ ์ ์ ๊ฐ ์ ค๋ค์ง? ์ ค๋ค์ ์ ์ค ๊ฒ์์์ ํํ์ ๋จ์๋ ๋ฃจํผ(rupee)๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐํน '๋๋๋ฃจํผ'๋ผ ๋ถ๋ฆฌ๋ ๊ฒ์ ์ ๋ฃจํผ๋ ์กด์ฌํ๋๋ฐ, ์ด๊ฑธ ํ๋ํ๋ฉด ์คํ๋ ค ์์งํ ๋ฃจํผ๊ฐ ๊ฐ์ํ๊ฒ ๋๋ค! ์ ค๋ค์ ์ ์ค ์๋ฆฌ์ฆ์ ์ฃผ www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ๋ค์ต์คํธ๋ผ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ์์น๋ณ (0, 0)์์ ์ต์ ๋น์ฉ์ ๊ณ์ฐ - dr, dc : ๊ฐ ์์น์์ ์๋, ์, ์ค๋ฅธ์ชฝ, ์ผ์ชฝ ์์น๋ฅผ ๋ฐฉ๋ฌธ ํ๊ธฐ ์ํ ๋ฐฉํฅํค - graph : ๊ฐ ์์น ๋ฐฉ๋ฌธ์ ์ํด ํ์ํ ๋น์ฉ - distance : ๊ฐ ์์น์์ (0, 0)๊น์ง ๊ฐ๊ธฐ์ํ ์ต์ ๋น์ฉ, ์ด๊ธฐ๋ ๋ฌดํ์ ์์ฑ ์ฝ๋ imp..
[Python] ๋ฐฑ์ค 1504 ํน์ ํ ์ต๋จ ๊ฒฝ๋ก | ๋ค์ต์คํธ๋ผ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/1504 1504๋ฒ: ํน์ ํ ์ต๋จ ๊ฒฝ๋ก ์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N๊ณผ ๊ฐ์ ์ ๊ฐ์ E๊ฐ ์ฃผ์ด์ง๋ค. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) ๋์งธ ์ค๋ถํฐ E๊ฐ์ ์ค์ ๊ฑธ์ณ์ ์ธ ๊ฐ์ ์ ์ a, b, c๊ฐ ์ฃผ์ด์ง๋๋ฐ, a๋ฒ ์ ์ ์์ b๋ฒ ์ ์ ๊น์ง ์๋ฐฉํฅ ๊ธธ์ด ์กด www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - v1 -> v2 ์์ ๋๋ v2 -> v1 ์์ ๊ฐ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ์ฌ ์์ ๊ฐ์ ์ถ๋ ฅํ๋ค. (2๋ฒ์ ๋ค์ต์คํธ๋ผ) - ๊ฒฝ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ(๊ฒฐ๊ณผ ๊ฐ์ด INF๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ) -1์ ์ถ๋ ฅ ์์ธํ ๋ด์ฉ์ ์ฝ๋ ์ฃผ์ ์ฐธ๊ณ ์์ฑ ์ฝ๋ import sys import heapq input =..
[Python] ๋ฐฑ์ค 13549 ์จ๋ฐ๊ผญ์ง 3 | ๋ค์ต์คํธ๋ผ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/13549 13549๋ฒ: ์จ๋ฐ๊ผญ์ง 3 ์๋น์ด๋ ๋์๊ณผ ์จ๋ฐ๊ผญ์ง์ ํ๊ณ ์๋ค. ์๋น์ด๋ ํ์ฌ ์ N(0 ≤ N ≤ 100,000)์ ์๊ณ , ๋์์ ์ K(0 ≤ K ≤ 100,000)์ ์๋ค. ์๋น์ด๋ ๊ฑท๊ฑฐ๋ ์๊ฐ์ด๋์ ํ ์ ์๋ค. ๋ง์ฝ, ์๋น์ด์ ์์น๊ฐ X์ผ www.acmicpc.net ์์ฑ ์ฝ๋ import heapq INF = int(1e9) N, K = map(int, input().split()) # ์์ ์์น, ๋์ฐฉ ์์น distance = [INF]*100001 # 100001๊ฐ์ ๋จ์ด์ง ๊ฑฐ๋ฆฌ def dijkstra(start): # ๋ค์ต์คํธ๋ผ distance[start] = 0 # ์์..
[Python] ๋ฐฑ์ค 1916 ์ต์๋น์ฉ ๊ตฌํ๊ธฐ | ๋ค์ต์คํธ๋ผ | ์๊ฐ์ด๊ณผ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/1916 1916๋ฒ: ์ต์๋น์ฉ ๊ตฌํ๊ธฐ ์ฒซ์งธ ์ค์ ๋์์ ๊ฐ์ N(1 ≤ N ≤ 1,000)์ด ์ฃผ์ด์ง๊ณ ๋์งธ ์ค์๋ ๋ฒ์ค์ ๊ฐ์ M(1 ≤ M ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์งธ ์ค๋ถํฐ M+2์ค๊น์ง ๋ค์๊ณผ ๊ฐ์ ๋ฒ์ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๋จผ์ ์ฒ์์๋ ๊ทธ www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ๋ฐ์ ์ ๋ ฅ์ด ๋ง์ผ๋ฏ๋ก sys.stdin.realine ์ ์ฌ์ฉํ๋ค. (์๊ฐ ์ด๊ณผ ํด๊ฒฐ) - ์ ํ์ ์ธ ๋ค์ต์คํธ๋ผ ๋ฌธ์ ์ ํ์ด๋ค - ์ฐ์ ์์ ํ(์ต์ํ)๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ๊ฑฐ๋ฆฌ ๋ ธ๋๋ฅผ ์ ํ - distance : start ๋ ธ๋๋ก๋ถํฐ ๊ฐ ๋ ธ๋์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅ (INF ๋ก ์ด๊ธฐํ) - graph : ๊ฐ ..