Upload files to "백준"
This commit is contained in:
46
백준/1967.py
Normal file
46
백준/1967.py
Normal 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
52
백준/1991.py
Normal 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
36
백준/2023.py
Normal 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
24
백준/2096.py
Normal 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
22
백준/2156.py
Normal 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))
|
||||
Reference in New Issue
Block a user