백준, 프로그래머스(파이썬)
10159 저울 [파이썬]
peanutwalnut
2022. 3. 23. 14:29
문제)
https://www.acmicpc.net/problem/10159
10159번: 저울
첫 줄에는 물건의 개수 N 이 주어지고, 둘째 줄에는 미리 측정된 물건 쌍의 개수 M이 주어진다. 단, 5 ≤ N ≤ 100 이고, 0 ≤ M ≤ 2,000이다. 다음 M개의 줄에 미리 측정된 비교 결과가 한 줄에 하나씩
www.acmicpc.net
처음부터 접근 방법이 잘못돼 한참을 헤매었다.
bfs로 풀려고 했는데 나중에 보니 간선의 가중치가 다르더라... 그걸 너무 늦게 깨달았다.
bfs, dfs는 간선의 가중치가 1로 다 같을 때 쓸 수 있는 것인데.... ㅠㅠ
소스코드)
n = int(input())
m = int(input())
dp = [[inf] * (n+1) for _ in range(n+1)]
for i in range(1, n+1):
for j in range(1, n+1):
if i==j:
dp[i][j] = 0
for i in range(m):
a, b = map(int, input().split())
dp[a][b] = 1
for k in range(1, n+1): # node k
for a in range(1, n+1): # start a
for b in range(1, n+1):
dp[a][b] = min(dp[a][b], dp[a][k] + dp[k][b])
#print(*dp, sep="\n")
for a in range(1, n+1):
count = 0
for b in range(1, n+1):
if dp[a][b] == inf and dp[b][a] == inf:
count += 1
print(count)
내가 처음 시도한 소스코드는 창피해서 못 올리겠다..