티스토리 뷰
- 문제 링크
https://www.acmicpc.net/problem/13424
13424번: 비밀 모임
입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 방
www.acmicpc.net
- 풀이
거의 기본 다익스트라 문제였다. 마지막 부분에 조금 헤맸지만 그래도 맞혔다.
1. 지문에서도 양방향 통행이 가능하다고 했기 때문에 그래프를 양방향 그래프로 만들어 준다.
2. 다익스트라 함수에서 별 다른 특이사항은 없다. 그냥 다익스트라 함수 원형을 구현해주면 된다. 거리 배열인 distance 배열을 return 해주면 된다.
3. 이제 for문을 도는데, list 형태로 받은 방의 번호를 가지고 반복한다. 각 방의 번호로 다익스트라 함수를 실행한다.
4. 다익스트라 함수를 통해 distance 배열이 return 됐을텐데, distance 배열의 길이만큼 for문을 돌면서 결과값을 담을 배열에 값을 하나하나씩 값을 삼입한다.
5. 방의 번호만큼 for문을 돌았다면, 결과값이 담겨있는 배열 중에서 제일 작은 값의 위치를 출력해주면 된다.
- 코드
import sys
import heapq
input = sys.stdin.readline
INF = int(1e10)
def dijkstra(start):
queue = []
distance = [INF] * (N+1)
distance[start] = 0
heapq.heappush(queue, (0, start))
while queue:
dist, curr = heapq.heappop(queue)
if dist > distance[curr]:
continue
for next, weight in graph[curr]:
cost = dist + weight
if cost < distance[next]:
distance[next] = cost
heapq.heappush(queue, (cost, next))
return distance
T = int(input())
for _ in range(T):
N, M = map(int, input().split())
arr = [0] * (N+1)
graph = [[] for _ in range(N+1)]
for i in range(M):
a, b, c = map(int, input().split())
graph[a].append((b, c))
graph[b].append((a, c))
K = int(input())
A = list(map(int, input().split()))
for i in A:
res = dijkstra(i)
for j in range(len(res)):
arr[j] += res[j]
print(arr.index(min(arr)))'Algorithm > BOJ' 카테고리의 다른 글
| [BOJ][Python] 백준 21610번 : 마법사 상어와 비바라기 (0) | 2023.03.21 |
|---|---|
| [BOJ][Python] 백준 14938번 : 서강그라운드 (1) | 2023.03.16 |
| [BOJ][Python] 백준 1270번 : 전쟁 - 땅따먹기 (1) | 2023.03.09 |
| [BOJ][Python] 백준 27211번 : 도넛 행성 (0) | 2023.01.26 |
| [BOJ 백준] 2206번 : 벽 부수고 이동하기 (0) | 2023.01.06 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 마법사 상어
- 데이크스트라
- 레벨 2
- 리액트 최근검색
- opgg #클론코딩 #할수있다
- 1270
- Python
- 백준 10026
- 최근검색 기능
- 백준
- 목데이터
- BFS
- 알고리즘
- 리코쳇 로봇
- boj 10026 python
- boj 2589
- 파이썬
- 6986
- 구현
- WOFF2
- 서강그라운드
- 리액트
- 보정평균
- BOJ
- 폰트 최적화
- 실버3
- 21610
- 도넛 행성
- 14938
- 리액트 츨겨찾기
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함