짝 맞추기
시간 제한2초메모리 제한512 MB
최대 5 by 5 격자에서 빈칸으로 같은 숫자를 연결해 가장 많은 쌍을 제거하고 전체 경로 길이를 최소화합니다.
문제
크기의 직사각형 판에서 혼자 하는 보드 게임이 있다. 판의 각 칸에는 처음부터 동물 한 마리나 장애물 하나가 놓여 있다. 문자 'X'는 장애물을 뜻하고, '0'부터 '9'까지의 숫자는 그 칸에 있는 동물의 종류를 뜻한다.
같은 종류인 동물 두 마리만 함께 없앨 수 있다. 두 마리를 없애면 그 두 칸은 빈칸이 되고, 게임이 끝날 때까지 빈칸으로 남는다. 장애물이 놓인 칸은 빈칸이 되지 않는다.
두 마리를 없애려면 두 칸이 서로 인접하거나, 두 칸을 잇는 경로가 있어야 한다. 두 칸이 가로나 세로로 맞닿아 있으면 인접하다고 한다. 경로는 서로 인접한 빈칸을 차례로 이어 놓은 것이고, 경로의 길이는 그 경로에 들어간 빈칸의 개수다. 동물이 놓인 두 칸은 경로에 포함하지 않는다. 두 칸이 인접하면 경로가 필요 없으므로 더해지는 길이는 0이다.
없앨 수 있는 짝의 최대 개수와, 그 최대 개수를 만들면서 쓰는 경로 길이 합의 최솟값을 출력하라.
입력
첫째 줄에 두 정수 과 이 공백으로 구분되어 주어진다. (, )
다음 개 줄에는 각각 개의 문자가 주어진다. 각 문자는 'X'이거나 '0'부터 '9'까지의 숫자이며, 문자 사이에 공백은 없다.
출력
두 정수를 공백으로 구분해 한 줄에 출력한다. 첫 번째 정수는 없앨 수 있는 짝의 최대 개수이고, 두 번째 정수는 그 최대 개수를 만들 때 필요한 경로 길이 합의 최솟값이다.