deveun   4년 전

테스트 케이스와 게시판의 반례들도 전부 맞는데 왜 틀렸습니다가 나오는지 모르겠습니다.

로직도 틀린 곳이 없어보이는데 어디가 잘못 되었을지 도와주세요 ㅠ

제 문제풀이 알고리즘은 이렇습니다.

  1. Bit PowerSet으로 나눌 수 있는 모든 경우의 수를 구하기
    (단, 000000 와 111111 처럼 2개로 나눠지지 않는 경우는 제외하였음)
  2. 0, 1 인 위치를 ArrayList a 와 b에 나누어 저장함
  3. 카피된 인접배열에서 a의 구역과 b구역의 인접한 부분을 모두 false 로 업데이트
  4. 업데이트해서 만들어진 인접배열에서 union작업
  5. a, b ArrayList 를 각각 순회하며 parent가 다른 경우가 있으면 다음 경우의 2번 작업부터 다시 수행.
  6. 구해진 a,b 구간의 인구수 차이의 minimum값을 없데이트
  7. minimum 값이 한번도 업데이트되지 않고, 초기값(Integer.MAX_VALUE/2) 과 같다면 -1 출력
    아닌 경우에는 min 값 출력

코드에서 혹시 잘못된 부분이나 제가 고려하지 못한 반례가 있다면 답글 부탁드립니다.

감사합니다!

deveun   4년 전

87번째줄, 94번째줄 고치고 해결했습니다 ㅠ

댓글을 작성하려면 로그인해야 합니다.