Algorithm Study

[프로그래머스] 네트워크 (level.3) / JAVA/ DFS

hyun-1200 2022. 5. 23. 00:47

https://programmers.co.kr/learn/courses/30/lessons/43162?language=java 

 

코딩테스트 연습 - 네트워크

네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있

programmers.co.kr

 

 

1. 노드의 방문 여부 배열을 2차원으로 할지 1차원으로 할지 고민했다.

-> 2차원으로 했기 때문에 check[i][j]= false & check[j][i]=false & computer[i][j]=1  세 조건이 다 만족하는 경우만 dfs를 돌려야했다.

 

* dfs함수가 한번 돌면서 연결되어 있는 정점들을 모두 true로 바꿔주기 때문에

dfs가 호출될때 answer을 증가시켜주면 된다.

 

2. dfs 함수의 매개변수로 n은 굳이 안보내고, computers.length로 사용하면 될 것 같다.

3. 처음에 dfs함수 안에서 for문 돌릴 때 양방향이라서 생각해서 now부터 시작했는데,

양방향이 아니라 단방향이므로 0부터 찾아주도록 바꿨다.

 

 

아래는 내가 제출한 코드 

 

 

 

 

나랑 비슷하게 풀었지만 check배열 1차원으로 해서 풀었다.

나보다 더 깔끔하다.

아래 코드 다시 복습해봐야지! 

잘 푼 사람들 코드 보고 습득하는거 짜릿해 🤭