티스토리 뷰
문제 출처: https://www.acmicpc.net/problem/2606

풀이법: 인접행렬을 이용한 dfs 알고리즘으로 풀었다.
Comment: 1) class 이름을 Main으로 하지 않으면 컴파일 에러가 난다.
2) 인접행렬은 사이즈에 + 1 만큼 행, 열을 생성하는게 편리하다. (방문 노드 체크 행렬도 마찬가지)
-> 이유? : 행렬의 인덱스는 0으로 시작하는 반면에 코테 문제에서 나오는 그래프에선 0번 노드가 잘 등장하지 않기 때문.
코드:
import java.util.*;
public class Main {
public static int count = 0;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int nodeCnt = 0;
int conCnt = 0;
nodeCnt = sc.nextInt();
conCnt = sc.nextInt();
//System.out.printf("%d %d\n", nodeCnt,conCnt);
int[][] adjMat = new int[nodeCnt + 1][nodeCnt + 1];
for(int i = 0; i < nodeCnt; i++) {
for(int j = 0; j < nodeCnt; j++) {
adjMat[i][j] = 0;
}
}
for(int i = 0; i < conCnt; i++) {
int idx = sc.nextInt();
int jdx = sc.nextInt();
//System.out.printf("연결 상태 %d %d\n", idx,jdx);
adjMat[idx][jdx] = 1;
adjMat[jdx][idx] = 1;
}
int[] visited = new int[nodeCnt+1];
for(int i = 0; i < nodeCnt; i++) {
visited[i] = 0;
}
dfs(adjMat, visited, 1);
System.out.print(count);
}
public static void dfs(int[][] adjMat, int[] visited, int node) {
visited[node] = 1;
//System.out.println(node + " ");
for(int i = 1; i < adjMat[0].length; i++) {
if(adjMat[node][i] == 1 && visited[i] == 0) {
dfs(adjMat, visited, i);
count ++;
}
}
}
}
'코딩테스트 > BOJ' 카테고리의 다른 글
[BOJ] 2667 단지번호 붙이기 (DFS) (0) | 2020.05.04 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Spring
- 프로그래밍 모델
- okhttp3
- 스프링
- jvm
- 디자인패턴
- WORA
- 카카오코테
- behavior parameterization
- Java #JIT #JVM
- spring cloud sleuth
- 코테
- Java #GC #가비지콜렉터 #Garbage Collector
- KAKAO 2021
- 카카오 인턴
- 2021
- 신규 아이디 추천
- PatternSyntaxException
- Java
- zipkin
- Kakao Blind
- IOC
- 카카오 코테
- nginx 내부
- 카카오
- 모던 자바 인 액션
- 2019 Kakao Blind
- 2020 KAKAO
- decorator
- WORE
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함