diff --git "a/alstjr7437/DP/\352\265\254\352\260\204-\353\202\230\353\210\204\352\270\260.py" "b/alstjr7437/DP/\352\265\254\352\260\204-\353\202\230\353\210\204\352\270\260.py" new file mode 100644 index 0000000..6c56569 --- /dev/null +++ "b/alstjr7437/DP/\352\265\254\352\260\204-\353\202\230\353\210\204\352\270\260.py" @@ -0,0 +1,21 @@ +# n, m = map(int,input()) + +# num = [ i for i in range(n): int(input())] + +# dp = [[-1e9] * m for _ in range(n+1)] +# for i in range(n): + +import sys +input = sys.stdin.readline + +n, m = map(int, input().split()) +dp1 = [[0]+[-1e9]*m for i in range(n+1)] +dp2 = [[0]+[-1e9]*m for i in range(n+1)] +num = [int(input()) for i in range(n) ] + +for i in range(1, n+1): + for j in range(1, min(m, (i+1)//2)+1): + dp2[i][j]=max(dp1[i-1][j], dp2[i-1][j]) + dp1[i][j]=max(dp1[i-1][j], dp2[i-1][j-1])+num[i-1] +print(max(dp1[n][m], dp2[n][m])) + diff --git a/alstjr7437/README.md b/alstjr7437/README.md index 4b3dfca..3524344 100644 --- a/alstjr7437/README.md +++ b/alstjr7437/README.md @@ -17,4 +17,6 @@ | 13차시 | 2024.02.29 | DP | 쉬운 계단 수 | https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/42 | | 14차시 | 2024.03.03 | 브루트포스 | 마인크래프트 | https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/48 | | 15차시 | 2024.03.09 | 우선순위 큐 | 파일 합치기3 | https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/53 | -| 16차시 | 2024.03.13 | 정렬 | 선 긋기 | https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/57 | \ No newline at end of file +| 16차시 | 2024.03.13 | 정렬 | 선 긋기 | https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/57 | +| 17차시 | 2024.03.16 | DP | 구간 나누기 | https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/61 | +| 18차시 | 2024.03.23 | 다익스트라 | 최단 경로 | https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/66 | \ No newline at end of file diff --git "a/alstjr7437/\352\267\270\353\236\230\355\224\204/\354\265\234\353\213\250\352\262\275\353\241\234.py" "b/alstjr7437/\352\267\270\353\236\230\355\224\204/\354\265\234\353\213\250\352\262\275\353\241\234.py" new file mode 100644 index 0000000..c50db6d --- /dev/null +++ "b/alstjr7437/\352\267\270\353\236\230\355\224\204/\354\265\234\353\213\250\352\262\275\353\241\234.py" @@ -0,0 +1,40 @@ +from heapq import * +import sys + +input = sys.stdin.readline + +v, e = map(int, input().split()) +k = int(input()) + +# 그래프 만들기 +graph = [[] for _ in range(v + 1)] +for _ in range(e): + a, b, c = map(int, input().split()) + graph[a].append((c, b)) + +# 결과 저장할 변수 만들기 +heap = [] +result = [int(1e9)] * (v + 1) + +# k 넣기 +result[k] = 0 +heappush(heap, (0, k)) + +# 다익스트라 돌리기 +while heap: + weight, now = heappop(heap) + # print(weight,now, heap, result) + if result[now] < weight: + continue + for next_weight, next_node in graph[now]: + total_weight = weight + next_weight + if total_weight < result[next_node]: + result[next_node] = total_weight + heappush(heap, (total_weight, next_node)) + +# 결과 출력하기 +for i in range(1, v + 1): + if result[i] == int(1e9): + print("INF") + else: + print(result[i]) diff --git "a/alstjr7437/\354\240\225\353\240\254/tempCodeRunnerFile.py" "b/alstjr7437/\354\240\225\353\240\254/tempCodeRunnerFile.py" deleted file mode 100644 index 01e1add..0000000 --- "a/alstjr7437/\354\240\225\353\240\254/tempCodeRunnerFile.py" +++ /dev/null @@ -1,3 +0,0 @@ - -# dohwaji[i][0] += 1000000000 -# dohwaji[i][1] += 1000000000 \ No newline at end of file