일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- autosize
- useAppDispatch
- RTK Query
- 무한 스크롤
- SSR
- tailwind
- ESlint
- 공변성
- CI/CD
- React
- 태그된 유니온
- webpack
- Promise
- map
- 이분 검색
- 호이스팅
- recoil
- CORS
- dfs
- async/await
- 반공변성
- 타입 좁히기
- Cypress
- 결정 알고리즘
- Jest
- 리터럴 타입
- app router
- TS
- 인터섹션
- 투포인터
Archives
- Today
- Total
짧은코딩
미래 도시 본문
반응형
풀이법
이 문제는 최소 이동 경로를 찾아야해서 플로이드 알고리즘으로 풀어야 한다. 모든 회사 사이의 가중치는 1이며 양방향 연결로 구성되어 있다. graph 이중 리스트를 만들고 이 안에 자기 자신으로 향하는 방향은 0을 넣어줬다. 그리고 삼중 배열로 최단 거리를 구해주면 된다.
코드
INF = int(1e9)
n, m = map(int, input().split())
graph = [[INF] * (n+1) for i in range(n+1)]
for i in range(m):
a, b = map(int, input().split())
graph[a][b] = 1
graph[b][a] = 1
for i in range(1, n+1):
graph[i][i] = 0
x, k = map(int, input().split())
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])
distance = graph[1][k] + graph[k][x]
if distance >= INF:
print("-1")
else:
print(distance)
안보고 풀어서 로직은 다 맞았는데 어이없게도 n, m의 위치를 바꿔쓰고 x, k의 위치도 바꿔써서 처음에 답이 나오지 않았다.
반응형
'코딩 테스트(Python) > 이것이 취업을 위한 코딩 테스트다' 카테고리의 다른 글
그래프 이론, 서로소 집합 (0) | 2022.07.06 |
---|---|
전보 (0) | 2022.07.05 |
플로이드 워셜 알고리즘 (0) | 2022.07.04 |
최단 경로, 다익스트라 (0) | 2022.06.30 |
효율적인 화폐 구성 (0) | 2022.06.23 |
Comments