๐์๊ณ ๋ฆฌ์ฆ/๋ฐฑ์ค
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 16437๋ฒ: ์ ๊ตฌ์ถ ์์
๋ฌธ์ ํ์ด ๊ฒฝ๋ก๋ ์ ์ผํ๋ฏ๋ก ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ ๋ฐ๋ก ๊ตฌํํ์ง ์์๋ค. ํธ๋ฆฌ์ ๋ฆฌํ ๋ ธ๋๊น์ง ์ฌ๊ท๋ฅผ ํตํด ์ด๋ํ๊ณ , ๋ฆฌํด ๊ฐ์ ํตํด ๋ฌธ์ ๋ฅผ ํ์๋ค. ์ฝ๋ import sys sys.setrecursionlimit(10**9) input = sys.stdin.readline n = int(input()) tree = [[] for _ in range(n + 1)] for i in range(2, n + 1): type, amount, root = input().split() amount, root = int(amount), int(root) if type == 'W': amount = -amount tree[root].append((i, amount)) def dfs(x, amount): for next, nex..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 17616๋ฒ: ๋ฑ์ ์ฐพ๊ธฐ
๋ฌธ์ ํ์ด ๋ฑ์๋ฅผ ์ฐพ์ ๋ ธ๋ ์๋ก ๋ช ๊ฐ์ ๋ ธ๋๊ฐ ์๋์ง, ์๋๋ก ๋ช ๊ฐ์ ๋ ธ๋๊ฐ ์๋์ง ๊ตฌํ๋ฉด ๋๋ค. ์ฝ๋ import sys sys.setrecursionlimit(10**9) input = sys.stdin.readline n, m, x = map(int, input().split()) up = [[] for _ in range(n + 1)] down = [[] for _ in range(n + 1)] for _ in range(m): a, b = map(int, input().split()) down[a].append(b) # a ์๋์ b up[b].append(a) # b ์์ a visited = [False] * (n + 1) def dfs(x, graph, cnt): visited[x] ..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 16947๋ฒ: ์์ธ ์งํ์ฒ 2ํธ์
๋ฌธ์ ํ์ด ๋จผ์ ์ฌ์ดํด์ ๊ตฌํ๋ค. ์ฌ์ดํด์ ํ๋๋ง ์กด์ฌํ๊ณ , ๊ธธ์ด๋ 3 ์ด์ ์ด์ด์ผ ํ๋ค. for i in range(1, n + 1): if not visited[i]: tmp = [] if dfs(i, tmp): print(cycle) break def dfs(x, tmp): global cycle visited[x] = True tmp.append(x) for next in graph[x]: if visited[next]: if next in tmp: if len(tmp[tmp.index(next):]) >= 3: cycle = set(tmp[tmp.index(next):]) return True continue dfs(next, tmp) tmp.pop() ์ฌ์ดํด์ ์ด๋ฃจ๋ ๋ ธ๋์์ ์์ํ์ฌ ๊น์ด๋ฅผ ..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 3584๋ฒ: ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณตํต ์กฐ์
๋ฌธ์ ํ์ด ๋ฐฑ์ค LCA ๋ฌธ์ ์ ๋์ผํ ์ค ์์๋๋ฐ ์๋์๋ค. https://www.acmicpc.net/problem/11437 11437๋ฒ: LCA ์ฒซ์งธ ์ค์ ๋ ธ๋์ ๊ฐ์ N์ด ์ฃผ์ด์ง๊ณ , ๋ค์ N-1๊ฐ ์ค์๋ ํธ๋ฆฌ ์์์ ์ฐ๊ฒฐ๋ ๋ ์ ์ ์ด ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ ์ค์๋ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณตํต ์กฐ์์ ์๊ณ ์ถ์ ์์ ๊ฐ์ M์ด ์ฃผ์ด์ง๊ณ , ๋ค์ M๊ฐ ์ค์๋ ์ www.acmicpc.net ์ฐจ์ด์ ์ LCA์ ๊ฒฝ์ฐ ์๋ฐฉํฅ ๊ฐ์ ์ผ๋ก ์ ๋ ฅ์ด ์ฃผ์ด์ง์ง๋ง, ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณตํต ์กฐ์์ ๊ฒฝ์ฐ ๋จ๋ฐฉํฅ์ผ๋ก ๊ฐ์ ์ด ์ฃผ์ด์ง๋ค. ๋ํ LCA๋ ๋ฃจํธ ๋ ธ๋๊ฐ 1๋ก ๊ณ ์ ๋์ง๋ง, ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณตํต ์กฐ์์ ๊ฒฝ์ฐ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ง์ ๊ตฌํด์ผ ํ๋ค. ์ฝ๋ import sys sys.setrecursionlimit(10**9) input = sys.stdin..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 2573๋ฒ: ๋น์ฐ
๋ฌธ์ ํ์ด DFS๋ฌธ์ , ๋ค๋ง ์กฐ๊ธ ๊น๋ค๋กญ๊ฒ ๊ตฌํํด์ผ ํ๋ค. "๋ง์ผ ์ ๋ถ ๋ค ๋ น์ ๋๊น์ง ๋ ๋ฉ์ด๋ฆฌ ์ด์์ผ๋ก ๋ถ๋ฆฌ๋์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์ 0์ ์ถ๋ ฅํ๋ค." ํด๋น ์กฐ๊ฑด์ ๊ตฌํํ์ง ์์ 62%์์ ํ๋ ธ์ต๋๋ค๊ฐ ๋์๋ค. [๋ฐ๋ก] 5 5 0 0 0 0 0 0 2 2 2 0 0 2 2 2 0 0 2 2 2 0 0 0 0 0 0 ๋ต : 0 ํ๋ฆฐ ๋ต : 3 ๋ํ DFS๋ก ํ ๊ฒฝ์ฐ sys.setrecursionlimit(10**4) setreucrsionlimit์ ๋๋ฌด ํฐ ๊ฐ์ ๋ฃ์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋์จ๋ค. ์ฃผ์ํ ๊ฒ!! ์ฝ๋ import sys sys.setrecursionlimit(10**4) input = sys.stdin.readline n, m = map(int, input().split()) graph = [..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 2668๋ฒ: ์ซ์๊ณ ๋ฅด๊ธฐ
๋ฌธ์ ํ์ด ์ฌ์ดํด์ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์๋ ํ์ด์ ๊ฑฐ์ ๋์ผํ๋ค. https://ku-hug.tistory.com/169 [Python] ๋ฐฑ์ค 9466๋ฒ: ํ ํ๋ก์ ํธ ๋ฌธ์ ํ์ด ์ฌ์ดํด์ ํ๋ณํ๋ ๋ฌธ์ ์ด๋ค. 1. ๋ฌธ์ ์์ ์ฃผ์ด์ง ๋ฐฐ์ด์ parent ๋ฐฐ์ด์ด๋ผ ํ์. 2. ์ฌ์ดํด์ ํ๋ณํ๊ธฐ ์ํด ์ด๋๊น์ง ๋ฐฉ๋ฌธํ ๋ ธ๋๋ฅผ cycle ๋ฐฐ์ด์ ์ ์ฅ, ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ์ํด visited ๋ฐฐ์ด์ ์ ku-hug.tistory.com ์ฝ๋ import sys input = sys.stdin.readline n = int(input()) graph = [0] visited = [False] * (n + 1) cycle = [] ans = [] for _ in range(n): graph.append(int(input())) d..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 9466๋ฒ: ํ ํ๋ก์ ํธ
๋ฌธ์ ํ์ด ์ฌ์ดํด์ ํ๋ณํ๋ ๋ฌธ์ ์ด๋ค. 1. ๋ฌธ์ ์์ ์ฃผ์ด์ง ๋ฐฐ์ด์ parent ๋ฐฐ์ด์ด๋ผ ํ์. 2. ์ฌ์ดํด์ ํ๋ณํ๊ธฐ ์ํด ์ด๋๊น์ง ๋ฐฉ๋ฌธํ ๋ ธ๋๋ฅผ cycle ๋ฐฐ์ด์ ์ ์ฅ, ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ์ํด visited ๋ฐฐ์ด์ ์์ฑ 3. 1๋ฒ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์ ๋ 4. 1๋ฒ ๋ ธ๋์ ์ฐ๊ฒฐ๋ 3๋ฒ ๋ ธ๋ ๋ฐฉ๋ฌธ ๊ฐ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ณ , ๊ทธ ๋ ธ๋์ ์ด์ด์ง ๋ ธ๋๋ฅผ ๊ณ์ ๋ฐฉ๋ฌธํ๋ค. ๋ง์ฝ ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๋ ธ๋์ด๊ณ ์ฌ์ดํด ๋ฐฐ์ด์ ํด๋น ๋ ธ๋๊ฐ ์กด์ฌํ๋ฉด ์ฌ์ดํด์ด ํ์ฑ๋์๋ค๋ ๊ฒ์ด๋ค. ์ ๊ณผ์ ์ ์ง์ ํด๋ณด๋ฉด ์ดํด๊ฐ ์ฝ๋ค. ์ฝ๋ import sys sys.setrecursionlimit(10**7) input = sys.stdin.readline def dfs(st): global team visited[st] = True cycle.append(s..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 16929๋ฒ: Tow Dots
๋ฌธ์ ํ์ด ์์ ์ง์ ๊ณผ ๊ฐ์ ๋ฌธ์์ธ ๊ฒฝ์ฐ dfs๋ฅผ ์ํํ๊ณ ๊ธธ์ด๊ฐ 4 ์ด์์ด๊ณ ์์ ์ง์ ์ผ๋ก ๋์์จ ๊ฒฝ์ฐ "Yes"๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค. ์ฝ๋ import sys input = sys.stdin.readline n, m = map(int, input().split()) graph = [list(input().rstrip()) for _ in range(n)] tempVisited = [[False] * m for _ in range(n)] dir = ((0, 1), (0, -1), (1, 0), (-1, 0)) def dfs(c, sti, stj, nowi, nowj, cnt): for dx, dy in dir: ni, nj = nowi + dy, nowj + dx if (sti, stj) == (ni, n..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1987๋ฒ: ์ํ๋ฒณ
๋ฌธ์ ํ์ด dfs + ๋ฐฑํธ๋ํน์ผ๋ก ํ์๋ค. pypy๋ก ์ ์ถ ์ค๋ณต๋ ๋ฌธ์๋ฅผ ์ฒดํฌํ๊ธฐ ์ํด alpha ๋ฐฐ์ด ์์ฑ (alpha[0] = True์ธ ๊ฒฝ์ฐ A์นธ์ ์ง๋ฌ๋ค๋ ์๋ฏธ) alpha = [False] * 26 ord('A') - 65 ์ด๋ฐ ์์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๋ง์ถฐ์ฃผ์๋ค. ๊ทธ ํ ๋ฐฑํธ๋ํน์ ํ๋ค. ์ฝ๋ import sys input = sys.stdin.readline r, c = map(int, input().split()) graph = [list(input().rstrip()) for _ in range(r)] alpha = [False] * 26 dir = ((0, 1), (0, -1), (1, 0), (-1, 0)) ans = 0 def condition(ni, nj): return ni < 0 or ..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1068๋ฒ: ํธ๋ฆฌ
๋ฌธ์ ํ์ด ์ ๋ ฅ๋ฐ์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ ๋ ธ๋์ ์์ ๋ ธ๋๋ฅผ ์ ์ฅํ๋ child ๋ฐฐ์ด์ ๋ง๋ค์๋ค. ์ญ์ ํ ๋ ธ๋์ ๊ฒฝ์ฐ child ๋ฐฐ์ด์ ์ถ๊ฐํ์ง ์์๋ค. n = int(input()) parent = list(map(int, input().split())) delNode = int(input()) child = [[] for _ in range(n)] for idx in range(n): if parent[idx] == -1 or idx == delNode: continue child[parent[idx]].append(idx) ์์ ๋ ธ๋๊ฐ ์๋ค๋ ๊ฒ์ ๋ฆฌํ ๋ ธ๋์์ ์๋ฏธ ์ ๊ฑฐํ ๋ ธ๋์ ์์ ๋ ธ๋๋ค์ ์ ๋ถ ๋ฆฌํ ๋ ธ๋๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํด๋น ๋ ธ๋์ -1 ๋์ def dfs(d): # ๋ฆฌํ ๋ ธ๋์ธ ๊ฒฝ์ฐ if ch..