Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바 5464
- 프로그래머스
- 코딩테스트
- 백준 16935
- java leetcode
- 분할정복
- 리트코드
- daily challenge
- 리트코드 자바
- 백준
- DP
- 프로그래머스 java
- 구현
- 파이썬
- 자바 리트코드
- java 프로그래머스
- 카카오
- 백준 18222
- 그래프 자바
- leetcode
- 인텔리제이 에러
- 코테
- Java
- dfs
- 리트코드 1557
- 자바
- leetcode 1721
- BFS
- 스프링 에러
- 스택
Archives
- Today
- Total
레벨업 일지
[Java] leetcode 2492. Minimum Score of a Path Between Two Cities 본문
알고리즘/leetcode
[Java] leetcode 2492. Minimum Score of a Path Between Two Cities
24시간이모자란 2023. 3. 23. 01:23문제
https://leetcode.com/problems/minimum-score-of-a-path-between-two-cities/description/
정점 1 에서 n 까지 연결된 간선의 최소값을 찾는 문제
풀이
간선 탐색은 BFS 탐색으로 구현하였다.
풀이는 다음과 같다.
- 이중 리스트로 그래프를 구현한다.
- BFS 탐색으로 모든 간선을 탐색한다.
예제 그림에서 볼 수 있듯이 사이클의 경우 이미 탐색한 정점이라도 간선은 체크해야한다. 이 점만 주의하면 된다.
코드
class Solution {
ArrayList<ArrayList<int[]>> g;
public int minScore(int n, int[][] roads) {
g = new ArrayList<>();
for(int i = 0 ;i < n+1;i ++){
g.add(new ArrayList<>());
}
for(int x[] : roads){
g.get(x[0]).add(new int[]{x[1], x[2]});
g.get(x[1]).add(new int[]{x[0], x[2]});
}
Queue<Integer> Q = new LinkedList<>();
boolean v[] = new boolean[n+1];
int ans = Integer.MAX_VALUE;
Q.offer(1);
v[1] = true;
while(!Q.isEmpty()){
int nv = Q.poll();
for(int x[] : g.get(nv)){
ans = Math.min(ans, x[1]);
if(!v[x[0]]){
v[x[0]] = true;
Q.offer(x[0]);
}
}
}
return ans;
}
}
'알고리즘 > leetcode' 카테고리의 다른 글
[Java] leetcode 1466. Reorder Routes to Make All Paths Lead to the City Zero (0) | 2023.03.24 |
---|---|
[Java] leetcode 1319. Number of Operations to Make Network Connected (2) | 2023.03.24 |
[Java] leetcode 605. Can Place Flowers (0) | 2023.03.20 |
[Java] leetcode 1472. Design Browser History (0) | 2023.03.18 |
[Java] leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal (2) | 2023.03.17 |
Comments