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