N×M개의 동전이 N행 M열을 이루어 탁자 위에 놓여 있다. 각 동전은 앞면(H)이 위를 향하도록 놓여 있거나 뒷면(T)이 위를 향하도록 놓여 있다.
한 번의 작업으로 한 행에 놓인 M개의 동전을 모두 뒤집거나, 한 열에 놓인 N개의 동전을 모두 뒤집을 수 있다. 이 작업은 원하는 만큼 반복할 수 있다.
예를 들어 처음 상태가 다음과 같다고 하자.
HHT
THH
THT
첫 번째 열의 동전을 모두 뒤집으면 아래와 같이 된다.
THT
HHH
HHT
이어서 첫 번째 행의 동전을 모두 뒤집으면 아래와 같이 된다.
HTH
HHH
HHT
마지막 상태에서 뒷면이 위를 향한 동전은 두 개이다. 처음 상태에서 작업을 아무리 반복해도 뒷면이 위를 향한 동전을 두 개보다 적게 만들 수는 없다.
동전의 처음 상태가 주어질 때, 작업을 반복해 뒷면이 위를 향한 동전의 개수를 최소로 만들려고 한다. 그 최소 개수를 구하는 프로그램을 작성하시오.