From 00408f112d18b7bdff4dafc003c2e82ef8e8e311 Mon Sep 17 00:00:00 2001 From: SUMIN Date: Sat, 11 Apr 2026 11:55:27 +0900 Subject: [PATCH] =?UTF-8?q?Upload=20files=20to=20"=EB=B0=B1=EC=A4=80"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 백준/1967.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 백준/1991.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 백준/2023.py | 36 ++++++++++++++++++++++++++++++++++++ 백준/2096.py | 24 ++++++++++++++++++++++++ 백준/2156.py | 22 ++++++++++++++++++++++ 5 files changed, 180 insertions(+) create mode 100644 백준/1967.py create mode 100644 백준/1991.py create mode 100644 백준/2023.py create mode 100644 백준/2096.py create mode 100644 백준/2156.py diff --git a/백준/1967.py b/백준/1967.py new file mode 100644 index 0000000..53af7d6 --- /dev/null +++ b/백준/1967.py @@ -0,0 +1,46 @@ +import sys +from collections import deque +from collections import defaultdict + +sys.setrecursionlimit(10**6) + +input = sys.stdin.readline + +graph = defaultdict(list) + +n = int(input()) +for _ in range(n-1): + parent, son, weight = map(int, input().split()) + graph[parent].append((son, weight)) + graph[son].append((parent, weight)) + + +dist = [-1 for _ in range(10001)] + +def BFS(start): + q = deque([start]) + visited = set([start]) + while q: + now = q.popleft() + for next, weight in graph[now]: + if next not in visited: + q.append(next) + visited.add(next) + dist[next] = dist[now] + weight + +dist[1] = 0 +BFS(1) + +value = -1 +index = 0 +for i in range(10001): + if(dist[i]>value): + value = dist[i] + index = i + +dist = [-1 for _ in range(10001)] +dist[index] = 0 + +BFS(index) + +print(max(dist)) \ No newline at end of file diff --git a/백준/1991.py b/백준/1991.py new file mode 100644 index 0000000..c2dc411 --- /dev/null +++ b/백준/1991.py @@ -0,0 +1,52 @@ +import sys +import math +from collections import deque +from collections import defaultdict + +input=sys.stdin.readline + +n = int(input()) +tree = defaultdict(list) + +for i in range(n): + node, left, right = map(str, input().split()) + tree[node].append(left) + tree[node].append(right) + +def preorder(i): + if(tree[i] == '.'): + return + elif(tree[i]): + print(i, end='') + preorder(tree[i][0]) + preorder(tree[i][1]) + else: + return + +def midorder(i): + if(tree[i] == '.'): + return + elif(tree[i]): + midorder(tree[i][0]) + print(i, end='') + midorder(tree[i][1]) + else: + return + + + +def lastorder(i): + if(tree[i] == '.'): + return + elif(tree[i]): + lastorder(tree[i][0]) + lastorder(tree[i][1]) + print(i, end='') + else: + return + +preorder('A') +print() +midorder('A') +print() +lastorder('A') diff --git a/백준/2023.py b/백준/2023.py new file mode 100644 index 0000000..d399e5c --- /dev/null +++ b/백준/2023.py @@ -0,0 +1,36 @@ +import sys +sys.setrecursionlimit(10**6) + +input = sys.stdin.readline + +N = int(input()) +arr= [0] * (10**N) +arr[0] = 1 +arr[1] = 1 +result = [] + +def is_prime(n): + + +def prime(n): + p=2 + while(p*p= (10**N) or digit>=N) : + if(arr[u]==0): + result.append(u) + return + if(arr[u]==1) : return + else : + for i in range(1, 10): + dfs(u+(i*(10**digit)), digit+1) + +for i in range(1, 10): + dfs(i, 1) + +sorarr=sorted(set(result)) + +for i in sorarr: + print(i) \ No newline at end of file diff --git a/백준/2096.py b/백준/2096.py new file mode 100644 index 0000000..b52ff7f --- /dev/null +++ b/백준/2096.py @@ -0,0 +1,24 @@ +import sys + +input = sys.stdin.readline + +N = int(input().rstrip()) + +dp = [0]*7 +for i in range(1, N+1): + a, b, c = map(int, input().split()) + j, k, l = dp[0], dp[1], dp[2] + m, n, o = dp[3], dp[4], dp[5] + dp[0] = max(j, k) + a + dp[1] = max(j, k, l) + b + dp[2] = max(k, l) + c + + dp[3] = min(m, n) + a + dp[4] = min(m, n, o) + b + dp[5] = min(n, o) + c + + +print(max(dp[0], dp[1], dp[2]), end=' ') +print(min(dp[3], dp[4], dp[5])) + + diff --git a/백준/2156.py b/백준/2156.py new file mode 100644 index 0000000..3573d6a --- /dev/null +++ b/백준/2156.py @@ -0,0 +1,22 @@ +import sys + +input = sys.stdin.readline + +n = int(input()) + +arr = [] + +for i in range(n): + arr.append(int(input())) + +li_sum = [0 for _ in range(n)] + +if(n>=3): + li_sum[0] = arr[0] + li_sum[1] = arr[0]+arr[1] + li_sum[2] = max(arr[0]+arr[1] , arr[1]+arr[2], arr[0]+arr[2]) + for i in range(3, n): + li_sum[i] = max(li_sum[i-2]+arr[i], li_sum[i-1], li_sum[i-3]+arr[i-1]+arr[i]) + print(li_sum[n-1]) +else: + print(sum(arr)) \ No newline at end of file