diff --git a/백준/1328.py b/백준/1328.py new file mode 100644 index 0000000..289947e --- /dev/null +++ b/백준/1328.py @@ -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]) \ No newline at end of file diff --git a/백준/1377.py b/백준/1377.py new file mode 100644 index 0000000..c12059b --- /dev/null +++ b/백준/1377.py @@ -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)) + diff --git a/백준/1406.py b/백준/1406.py new file mode 100644 index 0000000..a75d656 --- /dev/null +++ b/백준/1406.py @@ -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(pointer0): + A = A[:pointer-1] + A[pointer:] + pointer-=1 + +print(A) \ No newline at end of file diff --git a/백준/1456.py b/백준/1456.py new file mode 100644 index 0000000..50a8971 --- /dev/null +++ b/백준/1456.py @@ -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) \ No newline at end of file diff --git a/백준/1504.py b/백준/1504.py new file mode 100644 index 0000000..facaa45 --- /dev/null +++ b/백준/1504.py @@ -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)