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
- SerialDate 리펙터링
- java
- 백준
- java의 정석
- 프로그래머스
- DxTrace
- 11758번
- 2166번
- 냄새와 휴리스틱
- 9장
- Design Patterns
- 11286번
- Adapater Pattern
- programmers
- 1043번
- 코딩테스트
- springboot
- 17장
- 2206번
- BOJ
- Dxerr.h
- 10830번
- 코딩 테스트
- 1300번
- 가장 긴 증가하는 부분 수열2
- Design Pattern
- 클린코드
- Spring
- 자바의 정석
- 2156번
Archives
- Today
- Total
Don't give up!
[프로그래머스] 네트워크 (java) 본문
코딩테스트 연습 - 네트워크 | 프로그래머스 (programmers.co.kr)
어떻게 생각하고 문제를 풀었는가?
연결된 네트워크의 수를 구하기 위해 DFS를 사용하였습니다.
0번 컴퓨터부터 네트워크에 연결되있지 않다면 새로운 네트워크에 추가하고, 연결 가능한 컴퓨터를 순회하면서 네트워크의 연결을 수행함으로서 네트워크의 수를 구할 수 있겠다고 생각하였습니다.
코드
import java.util.*;
class Solution {
public int solution(int n, int[][] computers) {
int answer = 0;
Stack<Integer> nodes = new Stack<>();
boolean[] visited = new boolean[n];
for(int i=0;i<n;i++){
if(visited[i]) continue;
answer++;
nodes.push(i);
while(!nodes.empty()){
int index = nodes.pop();
visited[index] = true;
for(int j=0;j<n;j++){
if(computers[index][j]>0 && !visited[j]) nodes.push(j);
}
}
}
return answer;
}
}
테스트를 통과하는 코드를 작성하였습니다.
Stack을 활용하여 DFS를 구현하였으며 네트워크로 연결되지 않은 컴퓨터들을 네트워크로 만들어 DFS를 반복한 횟수를 반환하여 문제를 해결하였습니다.
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스] 다단계 칫솔 판매(java) (0) | 2021.05.23 |
---|---|
[프로그래머스] 단어 변환 (java) (0) | 2021.05.21 |
[프로그래머스] 가장 먼 노드(java) (0) | 2021.05.18 |