Upload files to "백준"

This commit is contained in:
2026-04-11 11:47:18 +09:00
parent 559d4458d5
commit 965ff9e4b1
5 changed files with 137 additions and 0 deletions

14
백준/1328.py Normal file
View 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
View 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
View 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
View 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
View 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)