[백준] 문제 9372번 : 상근이의 여행 - JAVA
2024. 12. 5. 17:41 - DoosanBaek
[링크] : https://www.acmicpc.net/problem/9372
💎 문제 분석 & 제약 조건
문제 분석 :
상근이가 모든 국가를 방문하기 위해 필요한 최소 비행기 수를 구하는 프로그램 작성.
제약 조건 :
첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고,
각 테스트 케이스마다 다음과 같은 정보가 주어진다.
첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1000)과 비행기의 종류 M(1 ≤ M ≤ 10000) 가 주어진다.
이후 M개의 줄에 a와 b 쌍들이 입력된다. a와 b를 왕복하는 비행기가 있다는 것을 의미한다. (1 ≤ a, b ≤ N; a ≠ b)
주어지는 비행 스케줄은 항상 연결 그래프를 이룬다.
🚀 의사 결정
1. 테스트 케이스의 수 T를 BufferedReader를 이용해서 입력받고
2. 각 테스트 케이스마다 국가의 수 N과 비행기의 종류 M을 입력받고
3. 최소 신장 트리(MST)를 이용해 모든 국가를 방문하기 위해 필요한 최소 비행기 수는 N - 1임을 이용
📜 소스코드(Java)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine()); // 테스트 케이스의 수
StringBuilder sb = new StringBuilder();
for (int t = 0; t < T; t++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); // 국가의 수
int M = Integer.parseInt(st.nextToken()); // 비행기의 수
// 국가의 수가 N개라면, 최소 N-1개의 비행기가 필요
// 입력된 비행기 정보는 실제로는 사용하지 않음
for (int i = 0; i < M; i++) {
br.readLine();
}
sb.append(N - 1).append("\n");
}
System.out.print(sb);
}
}
'알고리즘' 카테고리의 다른 글
[백준] 문제 3187번 : 양치기 꿍 - JAVA (0) | 2024.12.06 |
---|---|
[백준] 문제 2210번 : 숫자판 점프 - JAVA (0) | 2024.12.06 |
[백준] 문제 13116 : 30번 - JAVA (0) | 2024.12.06 |
[백준] 문제 9934번 : 완전이진트리 - JAVA (0) | 2024.12.06 |
[백준] 문제 16173번 : 점프왕 쩰리 - JAVA (0) | 2024.12.05 |
[백준] 문제 2309번 : 일곱난쟁이 - JAVA (0) | 2024.12.05 |
[백준] 문제 1946번 : 신입 사원 - JAVA (0) | 2024.12.04 |
[백준] 문제 28114번 : 팀명 정하기 - JAVA (1) | 2024.12.02 |