Upload files to "백준"

This commit is contained in:
2026-04-11 11:55:27 +09:00
parent 738342b1ed
commit 00408f112d
5 changed files with 180 additions and 0 deletions

46
백준/1967.py Normal file
View File

@@ -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))

52
백준/1991.py Normal file
View File

@@ -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')

36
백준/2023.py Normal file
View File

@@ -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<n):
if
def dfs(u, digit):
if(u >= (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)

24
백준/2096.py Normal file
View File

@@ -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]))

22
백준/2156.py Normal file
View File

@@ -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))