-
https://www.acmicpc.net/problem/1916
1916번: 최소비용 구하기
첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%201916
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 N 개의 도시가 있고, M 개의 버스가 있을 때 A에서 B까지 갈 수 있는
최소 비용을 출력하는 문제다.
다익스트라 알고리즘을 이용해서 문제를 해결했으며,
정렬은 PriorityQueue(우선순위 큐)를 사용하였고 람다식을 이용해 정렬했다
간선 정보는 ArrayList<ArrayList<Edge>>
어레이 리스트 안에 어레이 리스트를 넣는 방식으로 사용했다.
처음에 방문, 비용 배열과 어레이 리스트를 다 초기화 시켜 크기를 할당해 주고
이후 입력받은 간선 정보를 어레이 리스트에 넣어준 뒤
주어진 시작점을 pq에 넣어 pq가 빌 때까지 돌면서 최솟값을 찾아 넣어주는 식으로
문제를 해결했다.
cost에 시작 도시 A에서 갈 수 있는 모든 도시에 대한 최솟값이 담겨있기 때문에
cost[B]와 같은 식으로 결과를 출력해 주었다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 16398 행성 연결 JAVA (0) 2021.11.09 Baekjoon 5972 택배 배송 JAVA (0) 2021.11.09 Baekjoon 1753 최단경로 JAVA (0) 2021.11.09 Baekjoon 21924 도시 건설 JAVA (0) 2021.11.09 Baekjoon 1774 우주신과의 교감 JAVA (0) 2021.11.09 댓글