파일 업로드

서버 재부팅

profile
실행 시간 제한메모리 제한
2 초512 MB
📃 해결할 문제

개발자 민혁은 가끔씩 밤에 서버를 다운시키는 악랄한 해커들로 인해 문제를 겪고 있습니다. 어느날 아침, 그가 일어나보니 또다시 이런 일이 발생했습니다. 그의 N² 개의 서버들은 밤새 완벽한 N×N 정사각형 그리드 구조로 작동했지만, 일부가 다운된 상태인 것을 발견했습니다.

다행히도, 민혁은 "Server-Restartinator 300" 이라는 프로그램을 개발했는데, 이 프로그램은 한 번에 많은 서버를 재부팅 할 수 있어, 그가 가능한 한 빠르게 모든 서버들을 다시 작동 상태로 만드는 데 도움을 줍니다. 그는 그의 서버 그리드의 '왼쪽 위 사각형'에 프로그램을 적용할 수 있습니다. 이 사각형에 프로그램을 적용하면, 프로그램은 이 사각형의 모든 서버를 재부팅하여, 다운된 서버는 다시 작동하게 되지만, 불행히도 이미 작동 중인 서버는 다운됩니다. 즉, 다시 말해서, 프로그램은 사각형 내의 각 서버의 상태를 '토글'합니다.

민혁은 그의 프로그램을 충분히 많은 적절한 직사각형 모음에 적용함으로써, 결국 모든 서버를 정상 상태로 복원할 수 있을 것이으로 생각합니다. 그가 프로그램을 적용할 최소 횟수를 결정하는데 도움을 주십시오.

같은 사각형에 프로그램을 두 번 적용하는 것은 의미가 없을 것입니다, 왜냐하면 이것은 사각형 내의 서버에 대해 어떠한 순수한 영향도 미치지 않을 것이기 때문입니다. 따라서, 각 왼쪽 위 사각형에 프로그램을 각각 단 한 번만 적용하는 것을 고려해야만 합니다.

💻 입력

첫 번째 줄 : 입력의 첫 번째 줄은 정수 N입니다.

N 번째 줄 : N 줄 각각에는 N개의 문자가 포함된 문자열이 있으며, 각각 0 (작동 중인 서버를 나타냄) 또는 1 (다운된 서버를 나타냄)입니다.

🖨️ 출력

민혁이 모든 서버를 다시 작동시키기 위해 "Server-Restartinator 300"을 적용해야 하는 최소 횟수를 출력해주세요.


💻 예제 입력 1
3
001
111
111
🖨️ 예제 출력 1
2

💡 힌트

이 예시에서, 민혁이 프로그램을 전체 서버에 적용하면 (이것은 유효한 왼쪽 위 사각형이다), 프로그램은 서버의 상태를 다음과 같이 토글할 것입니다:

 

110
000
000

남은 것은 프로그램을 1들을 포함하는 왼쪽 위 사각형에 적용하는 것뿐이고, 완료됩니다. 총합으로, 이것은 2번만 적용됩니다.


출처: USACO 2017 January Contest, Bronze Problem 3. Cow Tipping