티스토리 뷰
이문제는 전형적인 dfs라고 생각하고 풀었다. 딱 보자마자 탐색부터 해야지..라고 생각했는데 이게 그래프 노드의 숫자만 기억하면 되서 이차배열로 생각하다 복잡해졌었다. 쉬운문제이지만 기본기가 있어야 하는 문제라고 생각한다!
풀이방법
dfs로 탐색을 하면서 visited배열로 방문여부를 체크한다. 방문하지 않을경우 연결되지 않은 네트워크 이므로 따로 탐색을 한다.
package programers;
public class Network {
static boolean[] visited;
static int n;
public static void main(String[] args) {
n = 3;
int[][] computers = { { 1, 1, 0 }, { 1, 1, 1 }, { 0, 1, 1 } };
int answer=0;
visited = new boolean[n];
for (int i = 0; i < n; i++) {
if (visited[i] == false){
dfs(i, computers);
answer++;
}
}
System.out.println(answer);
}
public static void dfs(int node, int[][] computers) {
for(int i=0;i<n;i++){
if(visited[i]==false && computers[node][i]==1){
visited[i] = true;
dfs(i,computers);
}
}
}
}
'CS공부 > 알고리즘&문제풀이' 카테고리의 다른 글
[프로그래머스]DFS:여행경로(java) (0) | 2020.06.10 |
---|---|
[프로그래머스]DFS:단어변환(java) (0) | 2020.06.09 |
[프로그래머스]DFS:타겟 넘버(java) (0) | 2020.06.03 |
[백준 14889]스타트와 링크/삼성 sw역량 테스트 기출(java) (0) | 2020.05.28 |
[백준 16234]인구이동(java) (0) | 2020.05.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 알고리즘
- Baekjoon
- Spring
- 완전탐색
- dfs
- git
- 코딩테스트
- 최소 스패닝 트리
- 삼성 sw역량 테스트
- 운영체제
- DP
- 삼성 sw역량테스트
- MST
- 분리 집합
- 채팅
- OS
- 자바
- BFS
- JavaScript
- 정렬
- programers
- Heap
- java
- sockjs
- 백준
- SWEA
- 프로그래머스
- websocket
- Oracle
- Stomp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함