Upload files to "백준"
This commit is contained in:
14
백준/1328.py
Normal file
14
백준/1328.py
Normal file
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
input = sys.stdin.readline
|
||||
|
||||
N, L, R = map(int, input().split())
|
||||
|
||||
D = [[[0 for i in range(101)] for j in range(101)] for k in range(101)]
|
||||
D[1][1][1] = 1
|
||||
|
||||
for i in range(2, N+1):
|
||||
for j in range(1, L+1):
|
||||
for k in range(1, R+1):
|
||||
D[i][j][k] = (D[i-1][j-1][k] + D[i-1][j][k-1] + (D[i-1][j][k] * (i-2)))%1000000007
|
||||
|
||||
print(D[N][L][R])
|
||||
18
백준/1377.py
Normal file
18
백준/1377.py
Normal file
@@ -0,0 +1,18 @@
|
||||
import sys
|
||||
|
||||
input = sys.stdin.readline().rstrip()
|
||||
arr = []
|
||||
temp = -500001
|
||||
n = int(input)
|
||||
|
||||
for i in range(n):
|
||||
num = int(sys.stdin.readline().rstrip())
|
||||
arr.append((num, i))
|
||||
|
||||
arr=sorted(arr)
|
||||
|
||||
for i in range(n):
|
||||
temp = max(temp, arr[i][1] - i)
|
||||
|
||||
print(str(temp+1))
|
||||
|
||||
24
백준/1406.py
Normal file
24
백준/1406.py
Normal file
@@ -0,0 +1,24 @@
|
||||
import sys
|
||||
|
||||
A = sys.stdin.readline().rstrip()
|
||||
B = int(sys.stdin.readline().rstrip())
|
||||
|
||||
pointer = len(A)
|
||||
|
||||
for i in range(B):
|
||||
tempstr = sys.stdin.readline().rstrip()
|
||||
if(tempstr[0] == 'P'):
|
||||
A = A[:pointer] + tempstr[2] + A[pointer:]
|
||||
pointer+=1
|
||||
elif(tempstr == 'L'):
|
||||
if(pointer>0):
|
||||
pointer-=1
|
||||
elif(tempstr == 'D'):
|
||||
if(pointer<len(A)):
|
||||
pointer+=1
|
||||
else:
|
||||
if(pointer>0):
|
||||
A = A[:pointer-1] + A[pointer:]
|
||||
pointer-=1
|
||||
|
||||
print(A)
|
||||
28
백준/1456.py
Normal file
28
백준/1456.py
Normal file
@@ -0,0 +1,28 @@
|
||||
import sys
|
||||
import math
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
Min, Max = map(int, input().split())
|
||||
A = [0]*10000001
|
||||
|
||||
for i in range(len(A)):
|
||||
A[i] = i
|
||||
|
||||
for i in range(2, int(math.sqrt(len(A)))+1):
|
||||
if A[i]==0:
|
||||
continue
|
||||
for j in range(i+i, len(A), i):
|
||||
A[j] = 0
|
||||
|
||||
count = 0
|
||||
|
||||
for i in range(2, 10000001):
|
||||
if A[i]!= 0:
|
||||
temp = A[i]
|
||||
while A[i] <= Max / temp:
|
||||
if A[i] >= Min / temp:
|
||||
count +=1
|
||||
temp = temp * A[i]
|
||||
|
||||
print(count)
|
||||
53
백준/1504.py
Normal file
53
백준/1504.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import sys
|
||||
import heapq
|
||||
|
||||
sys.setrecursionlimit(10**6)
|
||||
input = sys.stdin.readline
|
||||
|
||||
n, e = map(int, input().split()) #정점의 개수 N과 간선의 개수 E
|
||||
|
||||
graph = [[] for _ in range(n+1)]
|
||||
distance = [sys.maxsize] * (n+1)
|
||||
start = 1
|
||||
|
||||
for _ in range(e):
|
||||
a, b, c = map(int, input().split())
|
||||
graph[a].append((b, c))
|
||||
graph[b].append((a, c))
|
||||
|
||||
v1, v2 = map(int, input().split()) #반드시 들려야 하는 정점 위치
|
||||
|
||||
for i in graph[v1]:
|
||||
if(i[0]==v2):
|
||||
v_weight = i[1]
|
||||
break
|
||||
|
||||
q = []
|
||||
|
||||
|
||||
def dijkstra(start):
|
||||
distances = [sys.maxsize] * (n + 1)
|
||||
distances[start] = 0
|
||||
q = []
|
||||
heapq.heappush(q, (0, start))
|
||||
|
||||
while q:
|
||||
dist, now = heapq.heappop(q)
|
||||
if distances[now] < dist:
|
||||
continue
|
||||
for nxt, weight in graph[now]:
|
||||
cost = dist + weight
|
||||
if cost < distances[nxt]:
|
||||
distances[nxt] = cost
|
||||
heapq.heappush(q, (cost, nxt))
|
||||
return distances
|
||||
|
||||
d1 = dijkstra(1)
|
||||
dv1 = dijkstra(v1)
|
||||
dv2 = dijkstra(v2)
|
||||
|
||||
path1 = d1[v1] + dv1[v2] + dv2[n]
|
||||
path2 = d1[v2] + dv2[v1] + dv1[n]
|
||||
result = min(path1, path2)
|
||||
|
||||
print(result if result < sys.maxsize else -1)
|
||||
Reference in New Issue
Block a user