From b96bf630dfdd327afb7bbd8bf113d01f9fa191f6 Mon Sep 17 00:00:00 2001 From: Youjiiin Date: Mon, 22 Jan 2024 21:31:53 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AF=B8=EB=9E=98=EB=8F=84=EC=8B=9C=5F?= =?UTF-8?q?=EC=9C=A0=EC=A7=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\354\234\240\354\247\204.py" | 4 ++- .../\354\234\240\354\247\204.py" | 0 .../\354\234\240\354\247\204.py" | 28 +++++++++++++++ ...4\353\223\234 \354\233\214\354\205\234.py" | 35 +++++++++++++++++++ 4 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 "\354\235\264\354\275\224\355\205\214/09 \354\265\234\353\213\250 \352\262\275\353\241\234/\353\257\270\353\236\230_\353\217\204\354\213\234/\354\234\240\354\247\204.py" create mode 100644 "\354\235\264\354\275\224\355\205\214/09 \354\265\234\353\213\250 \352\262\275\353\241\234/\355\224\214\353\241\234\354\235\264\353\223\234 \354\233\214\354\205\234.py" diff --git "a/\354\235\264\354\275\224\355\205\214/08 \353\213\244\354\235\264\353\202\230\353\257\271 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215/\355\232\250\354\234\250\354\240\201\354\235\270_\355\231\224\355\216\230_\352\265\254\354\204\261/\354\234\240\354\247\204.py" "b/\354\235\264\354\275\224\355\205\214/08 \353\213\244\354\235\264\353\202\230\353\257\271 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215/\355\232\250\354\234\250\354\240\201\354\235\270_\355\231\224\355\216\230_\352\265\254\354\204\261/\354\234\240\354\247\204.py" index 38cf036..f6aa30a 100644 --- "a/\354\235\264\354\275\224\355\205\214/08 \353\213\244\354\235\264\353\202\230\353\257\271 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215/\355\232\250\354\234\250\354\240\201\354\235\270_\355\231\224\355\216\230_\352\265\254\354\204\261/\354\234\240\354\247\204.py" +++ "b/\354\235\264\354\275\224\355\205\214/08 \353\213\244\354\235\264\353\202\230\353\257\271 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215/\355\232\250\354\234\250\354\240\201\354\235\270_\355\231\224\355\216\230_\352\265\254\354\204\261/\354\234\240\354\247\204.py" @@ -8,10 +8,12 @@ d = [10001] * (m + 1) # 1로 만들기 + 거스름돈 문제 같은데 -# d를 10001개로 설정하는게 맞나? -> 1원이 있을 때? -> 화폐 단위별 개수를 저장하는 거라서 1001개가 맞지 않을까 +# d를 10001개로 설정하는게 맞나? -> 1원이 있을 때? -> 화폐 단위별 개수를 저장하는 거라서 101개가 맞지 않을까 # d[1] = m일 듯. # 점화식은? # di = min(d[i - 1], d[m//i]) +# 단단히 틀림. +# 왜 i - k 인가... d[0] = 0 for i in range(n): for j in range(money[i], m + 1): diff --git "a/\354\235\264\354\275\224\355\205\214/09 \354\265\234\353\213\250 \352\262\275\353\241\234/\353\257\270\353\236\230_\353\217\204\354\213\234/\354\234\240\354\247\204.py" "b/\354\235\264\354\275\224\355\205\214/09 \354\265\234\353\213\250 \352\262\275\353\241\234/\353\257\270\353\236\230_\353\217\204\354\213\234/\354\234\240\354\247\204.py" new file mode 100644 index 0000000..e69de29 diff --git "a/\354\235\264\354\275\224\355\205\214/09 \354\265\234\353\213\250 \352\262\275\353\241\234/\354\240\204\353\263\264/\354\234\240\354\247\204.py" "b/\354\235\264\354\275\224\355\205\214/09 \354\265\234\353\213\250 \352\262\275\353\241\234/\354\240\204\353\263\264/\354\234\240\354\247\204.py" index e69de29..cf5741a 100644 --- "a/\354\235\264\354\275\224\355\205\214/09 \354\265\234\353\213\250 \352\262\275\353\241\234/\354\240\204\353\263\264/\354\234\240\354\247\204.py" +++ "b/\354\235\264\354\275\224\355\205\214/09 \354\265\234\353\213\250 \352\262\275\353\241\234/\354\240\204\353\263\264/\354\234\240\354\247\204.py" @@ -0,0 +1,28 @@ +INF = int(1e9) +n, m = map(int, input().split()) + +graph = [[INF] * (n + 1) for _ in range(n + 1)] + +# 자기 자신 0 +for a in range(1, n + 1): + for b in range(1, n + 1): + if a == b: + graph[a][b] = 0 + +for i in range(m): + a, b = map(int, input().split()) + graph[a][b] = 1 + graph[b][a] = 1 # 안썼었음 + +x, k = map(int, input().split()) + +for i in range(1, m + 1): + for a in range(1, m + 1): + for b in range(1, m + 1): + graph[a][b] = min(graph[a][b], graph[a][i] + graph[i][b]) + +distance = graph[1][k] + graph[k][x] +if distance == INF: + print(-1) +else: + print(distance) \ No newline at end of file diff --git "a/\354\235\264\354\275\224\355\205\214/09 \354\265\234\353\213\250 \352\262\275\353\241\234/\355\224\214\353\241\234\354\235\264\353\223\234 \354\233\214\354\205\234.py" "b/\354\235\264\354\275\224\355\205\214/09 \354\265\234\353\213\250 \352\262\275\353\241\234/\355\224\214\353\241\234\354\235\264\353\223\234 \354\233\214\354\205\234.py" new file mode 100644 index 0000000..57e78aa --- /dev/null +++ "b/\354\235\264\354\275\224\355\205\214/09 \354\265\234\353\213\250 \352\262\275\353\241\234/\355\224\214\353\241\234\354\235\264\353\223\234 \354\233\214\354\205\234.py" @@ -0,0 +1,35 @@ +INF = int(1e9) + +# 노드개수, 간선의 개수 +n = int(input()) +m = int(input()) + +# 2차원 리스트 +graph = [[INF] * (n + 1) for _ in range(n + 1)] + +# 자기 자신 0으로 초기화 +for a in range(1, n + 1): + for b in range(1, n + 1): + if a == b: + graph[a][b] == 0 + +# 각 간선에 대한 정보 입력받기 +for _ in range(m): + # a에서 b까지 c + a, b, c = map(int, input().split()) + graph[a][b] = c + +# 플로이드 워셜 알고리즘 +for k in range(1, n + 1): + for a in range(1, n + 1): + for b in range(1, n + 1): + graph[a][b] = min(graph[a][b], graph[a][k] + graph[k][b]) + +# 출력 +for a in range(1, n + 1): + for b in range(1, n + 1): + if graph[a][b] == INF: + print("INFINITY", end=" ") + else: + print(graph[a][b], end=" ") + print() \ No newline at end of file