전체적인 로직은 제가 짰던 방식과 같습니다. 우선 말씀하신 부분으로 판단하자면 한 구역에 한해서만 연결 요소를 판단하시고 다른 구역에는 하시지 않은 것으로 보입니다. 저 같은 경우는 우선 두 구역을 질문자님과 같은 방식으로 나누었고 두 구역 모두 DFS로 탐색을 해주었습니다. (BFS 쓰셔도 무방합니다) DFS를 다시 한번 돌릴 때는 체크배열을 초기화를 해주고 돌렸습니다. (중복 부분 제거). 그리고 DFS 부분은 딱 연결요소만 판단하기 위해서 따로 함수로 빼주었습니다. 지금 바빠서 직접 돌려보지 못하였으니 제가 말씀드린 부분과 질문자님이 생각하신 부분이 다르시다면 댓글 부탁드립니다.
skyjpower 4년 전
제 생각한 풀이방법은
[0번 구역이 포함된 선거구 vs 0번 구역이 포함되지 않은 선거구]
로 나누고, 0번 구역에 연결된 구역들을 하나씩 선거구에 추가해보면서 인구 차이를 계산하는 것입니다.
인구 차이는
[0번 구역이 포함된 선거구 - 0번 구역이 포함되지 않은 선거구]
와 같이 계산하며, 이 값이 0보다 크거나 같은 경우를 가지치기 했습니다.
선거구가 두 개로 나누어 질 수 있는 지는 bfs를 통해 판단했습니다.
제가 생각한 것 중에 잘못된 것이 있는지 알려주시면 감사하겠습니다.