Algorithm Study

[프로그래머스] 전력망을 둘로 나누기 (level.2) / JAVA / 완전탐색

hyun-1200 2022. 10. 11. 12:10

https://school.programmers.co.kr/learn/courses/30/lessons/86971

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

STEP1. 모든 연결되어있는 조합 중 하나씩 바꿔서 둘로 나눈다. : map[i][j]=0, map[j][i]=0 으로 임시 변경 후 원상복구

STEP2. 나눠진 노드에서, 서로 연결되어있느 노드의 갯수를 구한다.  : dfs 함수 참고

 

 

 


 

 

문제 다 푼 후 점검!

 

 

생각보다 쉽게 풀렸다.

그래도 다시 보완한다면, 나는 dfs를 리턴형 void로 풀었지만 int 형으로 바꾸는게 더 깔끔할 것 같다.

 

 

- 리턴형을 void 로 하기 위해서 전역변수 reulst를 사용하고, dfs함수에서 적절한 값을 찾을때 마다 reulst++를 해줬다.

- 리턴형을 int로 변경한다면, 전역변수를 초기화하는 부분을 2번이나 없앨 수 있다. dfs함수를 실행할때마다 변수값을 더해주면된다.  

 


 

아래는 dfs의 리턴값을 int형으로 변경한 내용 

 

 

dfs의 결과값을 sum 변수에 계속 더해주면 된다 .!