아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

짝 맞추기

시간 제한2초메모리 제한512 MB

요약
최대 5 by 5 격자에서 빈칸으로 같은 숫자를 연결해 가장 많은 쌍을 제거하고 전체 경로 길이를 최소화합니다.
난이도

보통10점 중 7점

유형
백트래킹, BFS, 완전 탐색
정답자
아직 제출이 없습니다

문제

m×nm \times n 크기의 직사각형 판에서 혼자 하는 보드 게임이 있다. 판의 각 칸에는 처음부터 동물 한 마리나 장애물 하나가 놓여 있다. 문자 'X'는 장애물을 뜻하고, '0'부터 '9'까지의 숫자는 그 칸에 있는 동물의 종류를 뜻한다.

같은 종류인 동물 두 마리만 함께 없앨 수 있다. 두 마리를 없애면 그 두 칸은 빈칸이 되고, 게임이 끝날 때까지 빈칸으로 남는다. 장애물이 놓인 칸은 빈칸이 되지 않는다.

두 마리를 없애려면 두 칸이 서로 인접하거나, 두 칸을 잇는 경로가 있어야 한다. 두 칸이 가로나 세로로 맞닿아 있으면 인접하다고 한다. 경로는 서로 인접한 빈칸을 차례로 이어 놓은 것이고, 경로의 길이는 그 경로에 들어간 빈칸의 개수다. 동물이 놓인 두 칸은 경로에 포함하지 않는다. 두 칸이 인접하면 경로가 필요 없으므로 더해지는 길이는 0이다.

없앨 수 있는 짝의 최대 개수와, 그 최대 개수를 만들면서 쓰는 경로 길이 합의 최솟값을 출력하라.

입력

첫째 줄에 두 정수 mm과 nn이 공백으로 구분되어 주어진다. (1≤m≤51 \le m \le 5, 1≤n≤51 \le n \le 5)

다음 mm개 줄에는 각각 nn개의 문자가 주어진다. 각 문자는 'X'이거나 '0'부터 '9'까지의 숫자이며, 문자 사이에 공백은 없다.

출력

두 정수를 공백으로 구분해 한 줄에 출력한다. 첫 번째 정수는 없앨 수 있는 짝의 최대 개수이고, 두 번째 정수는 그 최대 개수를 만들 때 필요한 경로 길이 합의 최솟값이다.

예제2

  1. 예제 1

    입력
    3 4
    XX0X
    X11X
    X0XX
    
    예상 출력
    2 2
    
  2. 예제 2

    입력
    4 1
    9
    9
    9
    9
    
    예상 출력
    2 0