https://www.acmicpc.net/problem/2606
문제
접근
네트워크에 대한 입력값들을 이차원 배열에 담고,
방문여부를 체크할 Bool 배열을 선언하여 dfs를 구현해주었다.
풀이
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int com = sc.nextInt();
int idx = sc.nextInt();
int networks[][] = new int[idx][2];
for(int i=0;i<idx;i++) {
networks[i][0] = sc.nextInt();
networks[i][1] = sc.nextInt();
}
Boolean flag[] = new Boolean[com];
Arrays.fill(flag, false);
dfs(1,flag,networks);
int ans=0;
for(Boolean a : flag)
if(a) ans++;
System.out.println(ans-1);
}
private static void dfs(int idx, Boolean[] flag,int networks[][]) {
flag[idx-1] = true;
for(int i=0;i<networks.length;i++) {
if(!flag[networks[i][1]-1] && networks[i][0] == idx) dfs(networks[i][1],flag, networks);
if(!flag[networks[i][0]-1] && networks[i][1] == idx) dfs(networks[i][0],flag, networks);
}
}
}
1번에서 부터 시작해서 감염될때마다 flag에 설정을 해준다.
설정해줌과 동시에 count를 해주도록 만들면 몇줄을 더 줄일수 있을것 같다.
'Algorithm > Weekly Solved' 카테고리의 다른 글
[KAKAO 2021] 합승 택시 요금 - Java 코드 (Dijkstra) ★★★★ (0) | 2022.01.19 |
---|---|
[백준 1753] 최단경로 -Java코드 (Dijkstra)★★★ (0) | 2022.01.19 |
[2021 KAKAO] 순위검색 - Java코드 (0) | 2021.12.06 |
[백준 1920] 수찾기 - Java코드 (0) | 2021.12.06 |
[2021 KAKAO] 메뉴 리뉴얼 - Java코드 ★★★ (0) | 2021.11.30 |