chrismrkr   3년 전

문제에 있는 테스트케이스를 다 돌려봐도 결과는 똑같지만 자꾸 채점하면 틀렸습니다가 나옵니다.

코드는 아래와 같습니다.

개괄적인 코드는 

1. N을 입력받고, N으로 만들 수 있는 d1, d2의 경우의 수를 모두 만들어 저장합니다.


2. 그리고 (1,1)부터 (N,N)까지 하나씩 그 지점에서 선거구를 분할할 수 있는지 확인합니다.

(is_possible_location_to_split 함수에 해당합니다.)

3. 분할할 수 있다면, split_location() 함수를 통해서 선거구를 분할합니다. 이때,

5번 선거구를 d1, d2을 이용해 반복문을 통하여 먼저 분할하면서 1,2,3,4번 선거구의 경계도 지정해줍니다.

그리고 1,2,3,4번 선거구는 BFS를 통해서 만듭니다.


4. 그리고  분할된 선거구를 2중 반복문을 통하여 인구수의 총합을 구해주고, 

정렬 후 차이를 반환합니다.

이때, 위의 분할 과정에서 

  5

5  5  5

   5  0  5

       5   와 같은 분할이 발생할 수 있으므로 0인 경우도 5번 선거구로 함께 포함하여 합산합니다.

5. 이 과정을 반복해서 차이가 최소가 되는 값을 찾습니다.

혹시 문제접근에 대한 논리적인 이유가 있다면 꼭 꼭 답변 부탁드립니다. 또 반례도 제시해 주시면 감사하겠습니다 ㅠ

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