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
- Linux
- 필기후기
- 공부
- 웹
- 수박수박수박수박수?
- 인강
- 프로그래밍
- 한국재정정보원
- 코딩
- 건보필기
- algorithm
- 이클립스
- 알고리즘
- HTML
- 웹프로그래밍
- 필기
- 백준
- 프로그래밍언어
- 연결요소의개수
- 후기
- 농은면접
- 웹개발
- BOJ
- 중소기업면접
- CSS
- java
- 확인문제
- 부스트코스
- 정수내림차순으로배치하기
- 프로그래머스
Archives
- Today
- Total
공부하는 히욤이
[BOJ] 11724. 연결 요소의 개수 본문
BaekJoon 11724. 연결 요소의 개수
* 문제의 저작권은 BOJ 및 문제를 만든 사람에게 있습니다.
[문제 접근]
DFS와 BFS로 모두 풀 수 있는 문제 같은데 나는 BFS를 이용해서 풀었다.
연결되어 있는 간선들을 표시할 connect라는 2차원 배열을 하나 만들고 1로 표시해줬다.
그리고 해당 정점들의 방문 여부를 확인 할 수 있는 visit라는 1차원 배열을 만들어줌
해당 정점을 방문하지 않았으면 해당 정점과 y좌표 값이 1일 때의 y좌표 값을 큐에 넣어준다.
큐에 있는 값을 확인 했을 때 방문하지 않았으면 위에 방법과 동일하게 검사하고 큐에 넣어주고 방문 표시를 해준다.
그리고 while문이 끝나면 연결 요소의 개수를 세는 cnt를 ++한다.
처음에 실수로 cnt를 if문이 끝나고 넣었다.
이렇게 넣으면 결국 연결 요소의 여부와 상관없이 모든 정점의 개수를 세는 것이기 때문에 while문을 끝나고 넣어줘야 함 ! ! !
[코드]
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main_11724 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); //정점의 개수
int M = sc.nextInt(); //간선의 개수
int[][] connect = new int[N+1][N+1];
boolean[] visit = new boolean[N+1];
for (int i = 0; i < M; i++) {
int tempx = sc.nextInt();
int tempy = sc.nextInt();
connect[tempx][tempy] = 1;
connect[tempy][tempx] = 1;
}
int cnt = 0;
Queue<Cord> queue = new LinkedList<>();
for (int i = 1; i <= N; i++) {
if (!visit[i]) {
visit[i] = true;
for (int j = i; j <= N; j++) {
if (connect[i][j] == 1) {
queue.add(new Cord(j));
}
}
while (!queue.isEmpty()) {
Cord temp = queue.poll();
int tempx = temp.x;
if (!visit[tempx]) {
for (int j = 1; j <= N; j++) {
if (connect[tempx][j] == 1) {
queue.add(new Cord(j));
visit[tempx] = true;
}
}
}
}
cnt++;
}
}
System.out.println(cnt);
}
static class Cord{
int x;
public Cord(int x) {
this.x = x;
}
}
}
'Algorithm > BaekJoon' 카테고리의 다른 글
[BOJ] 1012. 유기농 배추 (0) | 2020.04.11 |
---|---|
[BOJ] 2667. 단지번호붙이기 (0) | 2020.04.11 |
[BOJ] 7576. 토마토 (0) | 2020.04.11 |
[BOJ] 1592. 영식이와 친구들 (0) | 2020.04.10 |
[BOJ] 6588. 골드바흐의 추측 (0) | 2020.02.13 |