๐๋ฌธ์ ํ์ด/๐งฉBaekjoon
[Python] ๋ฐฑ์ค 1003 ํผ๋ณด๋์น ํจ์ | DP
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/1003 1003๋ฒ: ํผ๋ณด๋์น ํจ์ ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค 0์ด ์ถ๋ ฅ๋๋ ํ์์ 1์ด ์ถ๋ ฅ๋๋ ํ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํ๋ค. www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - DP - ์ ๋ ฅ๊ฐ(1~40) ์ ๋ฐ๋ผ 0๊ณผ 1์ด ๋ถ๋ฆฐ ํ์๋ฅผ ์ ํ์์ ์ด์ฉํ์ฌ ๊ตฌํ ์ ์๋ค - ์ ๋ ฅ๊ฐ 0์ 0์ด 1ํ/1์ด 0ํ ๋ถ๋ฆฐ๋ค. ์ ๋ ฅ๊ฐ 1์ 0์ด 0ํ/1์ด 1ํ ๋ถ๋ฆฐ๋ค. - ์ ๋ ฅ๊ฐ์ด 2๋ผ๋ฉด f(2) = f(1) + f(0) ์ด๋ฏ๋ก 1์ด ํ ๋ฒ, 0์ด ํ ๋ฒ ๋ถ๋ฆฐ๋ค. - ์ ๋ ฅ๊ฐ์ด 3์ด๋ผ๋ฉด f(3) = f(2) + f(1) ์ด๋ฏ๋ก f(2) ์คํ์ 1ํ ๋ฒ, 0 ํ ๋ฒ ๋ถ๋ฆฐ ๊ฒ๊ณผ 1์ด ํ ๋ฒ ๋ถ๋ฆฐ ๊ฒ์ ๋ํ๋ฉด 1์ด 2๋ฒ..
[Python] ๋ฐฑ์ค 9095 1, 2, 3 ๋ํ๊ธฐ | DP
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/9095 9095๋ฒ: 1, 2, 3 ๋ํ๊ธฐ ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค, n์ 1, 2, 3์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - DP(๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ)์ ์ ํ์ ์ธ ๋ฌธ์ ์ด๋ค - DP๋ ํ๋ฒ ์งํํ ๊ณ์ฐ์ ๋ํด์ ์ ์ฅ ํด๋๊ณ ๋ ๋ฐ์์ ๊ณ์ฐ ๊ฐ๋ง ์ฌ์ฉํ๋ค. - ํด๋น ์ฝ๋์์ numbers ๋ฐฐ์ด์ ๊ณ์ฐ ๊ฒฐ๊ณผ ๊ฐ์ ์ ์ฅํด๋๋ ์ญํ ์ ํ๋ค. - 1, 2, 3์ ์ด์ฉํ์ฌ 1, 2, 3์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ณด์ 1 = 1 1์ ๋ง๋๋ ๋ฐฉ๋ฒ์ 1๊ฐ(numbers[1] = 1) 2 = 1 + 1 2 = 2 2๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ 2๊ฐ(numbers[2] = 2) 3 ..
[Python] ๋ฐฑ์ค 1715 ์นด๋ ์ ๋ ฌํ๊ธฐ | ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/1715 1715๋ฒ: ์นด๋ ์ ๋ ฌํ๊ธฐ ์ ๋ ฌ๋ ๋ ๋ฌถ์์ ์ซ์ ์นด๋๊ฐ ์๋ค๊ณ ํ์. ๊ฐ ๋ฌถ์์ ์นด๋์ ์๋ฅผ A, B๋ผ ํ๋ฉด ๋ณดํต ๋ ๋ฌถ์์ ํฉ์ณ์ ํ๋๋ก ๋ง๋๋ ๋ฐ์๋ A+B ๋ฒ์ ๋น๊ต๋ฅผ ํด์ผ ํ๋ค. ์ด๋ฅผํ ๋ฉด, 20์ฅ์ ์ซ์ ์นด๋ ๋ฌถ์๊ณผ 30์ฅ www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ์์ ์นด๋ ๋ญ์น๋ค ๋ถํฐ ์์๋๋ก ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค! - ์นด๋ ๋ญ์น๊ฐ 1๊ฐ๋ผ๋ฉด ๋น๊ตํ ๋ญ์น๊ฐ ์์ผ๋ฏ๋ก 0 ๋ฐํ - ์นด๋ ๋ญ์น๊ฐ 3๊ฐ ์ด์์ด๋ผ๋ฉด ์ต์๊ฐ 2๊ฐ๋ฅผ ๋ฝ์ ์์๋๋ก ์ฐ์ฐ(์ฐ์ ์์ ํ) - ํ ์์ ๋ญ์น๊ฐ 2๊ฐ ๋จ์๋ค๋ฉด ๋์ด์ ์ต์ ๊ฐ 2๊ฐ๋ฅผ ์ฐพ์ง ์๊ณ ์ฐ์ฐ ๊ฐ์ ๋ํ์ฌ ์ถ๋ ฅ & ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ..
[Python] ๋ฐฑ์ค 1774 ์ฐ์ฃผ์ ๊ณผ์ ๊ต๊ฐ | ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/1774 21924๋ฒ: ๋์ ๊ฑด์ค ์ฒซ ๋ฒ์งธ ์ค์ ๊ฑด๋ฌผ์ ๊ฐ์ $N$ $(3 \le N \le 10^5 )$์ ๋๋ก์ ๊ฐ์ $M$ $(2 \le M \le min( {N(N-1) \over 2}, 5×10^5)) $๊ฐ ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค ๋ถํฐ $M + 1$์ค๊น์ง ๊ฑด๋ฌผ์ ๋ฒํธ $a$, $b$ $(1 \le a, b \le N, a ≠ b)$์ ๋ www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ - dots : ๊ฐ ์ (์ ์ , ๋ ธ๋) ๋ณ x, y ์ขํ ์ ์ฅ - edges : ๊ฐ์ ์ ๋น์ฉ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ - parent : ์ ์ ๋ณ ์ํ ์งํฉ ์ ๋ณด - ๊ฐ ์ ์ ์ ๋ณด๋ฅผ ์์๋๋ก dots..
[Python] ๋ฐฑ์ค 21924 ๋์ ๊ฑด์ค | ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/21924 21924๋ฒ: ๋์ ๊ฑด์ค ์ฒซ ๋ฒ์งธ ์ค์ ๊ฑด๋ฌผ์ ๊ฐ์ $N$ $(3 \le N \le 10^5 )$์ ๋๋ก์ ๊ฐ์ $M$ $(2 \le M \le min( {N(N-1) \over 2}, 5×10^5)) $๊ฐ ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค ๋ถํฐ $M + 1$์ค๊น์ง ๊ฑด๋ฌผ์ ๋ฒํธ $a$, $b$ $(1 \le a, b \le N, a ≠ b)$์ ๋ www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ ์์ฑ ์ฝ๋ import sys input = sys.stdin.readline N, M = map(int, input().split()) parent = [i for i in range(N..
[Python] ๋ฐฑ์ค 19368 ํ์ฑ ์ฐ๊ฒฐ | ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/19368 14621๋ฒ: ๋๋ง ์๋๋ ์ฐ์ ์ ๋ ฅ์ ์ฒซ์งธ ์ค์ ํ๊ต์ ์ N์ ํ๊ต๋ฅผ ์ฐ๊ฒฐํ๋ ๋๋ก์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. (2 ≤ N ≤ 1,000) (1 ≤ M ≤ 10,000) ๋์งธ ์ค์ ๊ฐ ํ๊ต๊ฐ ๋จ์ด ๋ํ๊ต๋ผ๋ฉด M, ์ฌ์ด ๋ํ๊ต๋ผ๋ฉด W์ด ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ ์์ฑ ์ฝ๋ import sys input = sys.stdin.readline n = int(input()) edges = [] # ๋น์ฉ ์ค๋ฆ์ฐจ์์ ์ํ ๋ฆฌ์คํธ parent = [i for i in range(n+1)] # ์๋ก์ ์งํฉ (๋ณธ์ธ์ ๋ถ๋ชจ๋ก ๊ฐ๋๋ก ์ด๊ธฐํ) f..
[Python] ๋ฐฑ์ค 14621 ๋๋ง ์๋๋ ์ฐ์ | ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/14621 14621๋ฒ: ๋๋ง ์๋๋ ์ฐ์ ์ ๋ ฅ์ ์ฒซ์งธ ์ค์ ํ๊ต์ ์ N์ ํ๊ต๋ฅผ ์ฐ๊ฒฐํ๋ ๋๋ก์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. (2 ≤ N ≤ 1,000) (1 ≤ M ≤ 10,000) ๋์งธ ์ค์ ๊ฐ ํ๊ต๊ฐ ๋จ์ด ๋ํ๊ต๋ผ๋ฉด M, ์ฌ์ด ๋ํ๊ต๋ผ๋ฉด W์ด ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ - school : ์ ์ ๋ณ ํ๊ต ์ฑ๋ณ - parent : ์ ์ ๋ณ ์๋ก์ ์งํฉ ์ ๋ณด - edges : ๊ฐ์ ์ ๋น์ฉ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ณด ์ ์ฅ - ์ ๋ ฌ๋ edges๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ๋ฉฐ ์ฌ์ดํด์ด ๋ฐ์ํ์ง ์์ผ๋ฉด ์ฐ๊ฒฐ - ์๋ก์ ์งํฉ์ด ์ ์ ๋ณธ์ธ๊ณผ ๊ฐ์ ์ ์ ์ ๊ฐ์..
[Python] ๋ฐฑ์ค 6497 ์ ๋ ฅ๋ | ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/6497 6497๋ฒ: ์ ๋ ฅ๋ ์ฑ์ง์ด๋ ํ ๋์์ ์์ฅ์ธ๋ฐ ๊ฑฐ์ง๋ผ์ ์ ๋ ฅ๋์ ๋๋๋๋ค. ๊ทธ๋์ ๋ชจ๋ ๊ธธ๋ง๋ค ์๋ ์ผ์ ธ ์๋ ๊ฐ๋ก๋ฑ ์ค ์ผ๋ถ๋ฅผ ์๋ฑํ๊ธฐ๋ก ํ์๋ค. ๊ธธ์ ๊ฐ๋ก๋ฑ์ ์ผ ๋๋ฉด ํ๋ฃจ์ ๊ธธ์ ๋ฏธํฐ ์๋งํผ ๋์ด ๋ค www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ํฌ๋ฃจ์ค์นผ (์ต์ ์คํจ๋ ํธ๋ฆฌ) ์๊ณ ๋ฆฌ์ฆ - find ํจ์ : ๋ถ๋ชจ ๋ ธ๋(์ด๋ ์งํฉ์ ์ํ๋์ง) ํ์ธ - union ํจ์ : ์ ์ a, b๋ฅผ ๊ฐ์ ์งํฉ์ ์ํ๋๋ก parent ์ ๋ฐ์ดํธ - ์ฌ๋ฌ ํ ์คํธ์ผ์ด์ค ์์ผ๋ฏ๋ก n, m์ด 0, 0 ์ผ๋ ์ข ๋ฃ ์กฐ๊ฑด์ผ๋ก ๋ฌดํ ๋ฐ๋ณต - edges : ๊ฐ์ ์ ๋น์ฉ ๊ธฐ์ค ์ค๋ฆ์ฐจ์์ผ๋ก ์ ์ฅ - parent : ๊ฐ ..
[Python] ๋ฐฑ์ค 4386 ๋ณ์๋ฆฌ ๋ง๋ค๊ธฐ | ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/4386 4386๋ฒ: ๋ณ์๋ฆฌ ๋ง๋ค๊ธฐ ๋ํ์ด๋ ์ฐ์ฃผ์ ์ ์ด๋ค. ์ด์ ๋ํ์ด๋ ์๋ฌด๋ ๊ฒ๋ ๋๋ธ๋ฌ์ ธ ์๋ n๊ฐ์ ๋ณ๋ค์ ์ด์ด์ ๋ณ์๋ฆฌ๋ฅผ ํ๋ ๋ง๋ค ๊ฒ์ด๋ค. ๋ณ์๋ฆฌ์ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค. ๋ณ์๋ฆฌ๋ฅผ ์ด๋ฃจ๋ ์ ์ ์๋ก ๋ค๋ฅธ ๋ ๋ณ์ ์ผ www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ํฌ๋ฃจ์ค์นผ (์ต์ ์คํจ๋ ํธ๋ฆฌ) ์๊ณ ๋ฆฌ์ฆ - alist : ๊ฐ ์ ์ ์ x, y ์ ๋ณด ์ ์ฅ - edges : ์ ์ ๊ฐ ๋ชจ๋ ๊ฐ์ ๊ธธ์ด( sqrt((x1 - x2)**2 + (y1 - y2)**2) ) ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ์ฅ - parent : ์งํฉ์ ๋ณด ( ์ฐ๊ฒฐ๋ ์ ์ ์ ๋ณด) - find ํจ์ : ๊ฐ์ ์งํฉ์ ์ํด์๋์ง ํ์ธ - unio..