From 96c620e88ef419d2dd3e19fb4ea9c1807585a4b9 Mon Sep 17 00:00:00 2001 From: songyc macbook Date: Fri, 20 Mar 2026 22:40:39 +0900 Subject: [PATCH] baekjoon 20260320 --- code_study/Baekjoon/python/1005.py | 33 +++++++++++--------- code_study/Baekjoon/python/1005_2.py | 46 +++++++++++++++------------- code_study/Baekjoon/python/2902.py | 1 + 3 files changed, 43 insertions(+), 37 deletions(-) create mode 100644 code_study/Baekjoon/python/2902.py diff --git a/code_study/Baekjoon/python/1005.py b/code_study/Baekjoon/python/1005.py index 188666c..7ea583a 100644 --- a/code_study/Baekjoon/python/1005.py +++ b/code_study/Baekjoon/python/1005.py @@ -2,28 +2,31 @@ import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline +ans = [] + for _ in range(int(input())) : N, K = map(int, input().split()) + bt = [0] + list(map(int, input().split())) - build_time = [0] + list(map(int, input().split())) - - build_info = [[] for _ in range(N+1)] + prev_build = [[] for _ in range(N+1)] for _ in range(K) : x, y = map(int, input().split()) - build_info[y].append(x) - - W = int(input()) + prev_build[y].append(x) + W = int(input()) dp = [-1]*(N+1) - def solve(target) : - if dp[target] == -1 : - max_build_time = 0 - for prev in build_info[target] : - max_build_time = max(max_build_time, solve(prev)) + def build(n) : + if dp[n] == -1 : + prev_time = 0 + + for prev in prev_build[n] : + prev_time = max(prev_time, build(prev)) + + dp[n] = prev_time + bt[n] - dp[target] = max_build_time + build_time[target] - - return dp[target] + return dp[n] - print(solve(W)) \ No newline at end of file + ans.append(build(W)) + +print("\n".join(map(str, ans))) \ No newline at end of file diff --git a/code_study/Baekjoon/python/1005_2.py b/code_study/Baekjoon/python/1005_2.py index 1919849..9d0befd 100644 --- a/code_study/Baekjoon/python/1005_2.py +++ b/code_study/Baekjoon/python/1005_2.py @@ -2,43 +2,45 @@ from collections import deque import sys input = sys.stdin.readline -ans = [] -T = int(input()) - -for _ in range(T) : +def solve() : N, K = map(int, input().split()) - - build_info = [[] for _ in range(N+1)] - dp = [-1]*(N+1) build_time = [0] + list(map(int, input().split())) + + graph = [[] for _ in range(N+1)] indegree = [0]*(N+1) - for _ in range(K) : - u, v = map(int, input().split()) - build_info[u].append(v) - indegree[v] += 1 - - W = int(input()) + x, y = map(int, input().split()) + graph[x].append(y) + indegree[y] += 1 qu = deque() + dp = [0]*(N+1) for i in range(1, N+1) : if indegree[i] == 0 : qu.append(i) dp[i] = build_time[i] + W = int(input()) + while qu : now = qu.popleft() + if now == W : break - - for next in build_info[now] : - dp[next] = max(dp[next], dp[now] + build_time[next]) + + for nxt in graph[now] : + dp[nxt] = max(dp[nxt], dp[now] + build_time[nxt]) - indegree[next] -= 1 - if indegree[next] == 0 : - qu.append(next) - - ans.append(str(dp[W])) + indegree[nxt] -= 1 + if indegree[nxt] == 0 : + qu.append(nxt) + + return dp[W] -print('\n'.join(ans)) \ No newline at end of file +ans = [] + +for _ in range(int(input())) : + ans.append(solve()) + +print("\n".join(map(str, ans))) \ No newline at end of file diff --git a/code_study/Baekjoon/python/2902.py b/code_study/Baekjoon/python/2902.py new file mode 100644 index 0000000..7690b1e --- /dev/null +++ b/code_study/Baekjoon/python/2902.py @@ -0,0 +1 @@ +print("".join(s[0] for s in input().split("-"))) \ No newline at end of file