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
- 한국재정정보원
- 프로그래머스
- 인강
- algorithm
- Linux
- 부스트코스
- 확인문제
- 중소기업면접
- HTML
- 공부
- 후기
- CSS
- 프로그래밍언어
- 필기
- 이클립스
- 건보필기
- 백준
- 웹
- 웹개발
- 프로그래밍
- 정수내림차순으로배치하기
- java
- 필기후기
- 코딩
- 수박수박수박수박수?
- 농은면접
- BOJ
- 알고리즘
- 웹프로그래밍
- 연결요소의개수
Archives
- Today
- Total
공부하는 히욤이
[BOJ] 2606. 바이러스 본문
BaekJoon 2606. 바이러스
* 문제의 저작권은 BOJ 및 문제를 만든 사람에게 있습니다.
[문제 접근]
컴퓨터 대수만큼 배열을 만들어 각 컴퓨터 번호들이 연결되어있으면 1 연결되어있지 않으면 0으로 값을 줬다.
1번 컴퓨터가 바이러스에 걸린 컴퓨터라서 queue와 dfs에 바로 1을 넣어줬다.
방문하지 않았고 연결된 컴퓨터의 좌표 값이 1이라면 바이러스에 걸린 컴퓨터이기 때문에 answer++ 해줌
[코드]
<DFS>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static boolean[] visited;
static int answer;
static int computer;
static int[][] map;
public static void main(String[] args) throws Exception, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
computer = Integer.parseInt(br.readLine());
int connect = Integer.parseInt(br.readLine());
map = new int[computer+1][computer+1];
visited = new boolean[computer+1];
for (int i = 0; i < connect; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
map[x][y] = map[y][x] = 1;
}
dfs(1);
System.out.println(answer);
}
static void dfs(int num) {
/* 방문했으면 넘김 */
if (visited[num]) {
return;
}
if (num>computer) {
return;
}
visited[num] = true;
for (int i = 1; i <= computer; i++) {
if (map[num][i] == 1) {
if (!visited[i]) {
answer++;
dfs(i);
}
}
}
}
}
<BFS>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int computer = Integer.parseInt(br.readLine()); //컴퓨터 대수
int connect = Integer.parseInt(br.readLine()); //연결된 컴퓨터 쌍
int[][] map = new int[computer+1][computer+1];
boolean[] visited = new boolean[computer+1];
int answer = 0;
for (int i = 0; i < connect; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
map[x][y] = map[y][x] = 1; // 1이면 연결된 컴퓨터
}
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
while (!queue.isEmpty()) {
int temp = queue.poll();
visited[temp] = true;
for (int i = 1; i <= computer; i++) {
if (map[temp][i] == 1) {
if (!visited[i]) {
queue.offer(i);
visited[i] = true;
answer++;
}
}
}
}
System.out.println(answer);
}
}
'Algorithm > BaekJoon' 카테고리의 다른 글
[BOJ] 9093. 단어 뒤집기 (0) | 2020.02.06 |
---|---|
[BOJ] 2455. 지능형 기차 (0) | 2019.12.15 |
[BOJ] 2667. 단지번호붙이기 (0) | 2019.08.22 |
[BOJ] 5212. 지구 온난화 (0) | 2019.08.22 |
[BOJ] 4949. 균형잡힌 세상 (0) | 2019.08.04 |