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

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

두부장수 장홍준 2

시간 제한1초메모리 제한256 MB

요약
등급 가격표에 따라 상하좌우로 맞닿은 두 칸씩 도미노로 묶고 남은 칸은 버려 전체 가격 합을 최대로 만듭니다.
난이도

보통10점 중 7점

유형
그래프, 최단 경로
정답자
아직 제출이 없습니다

문제

장홍준은 두부장수다. 세로 크기가 N, 가로 크기가 M인 두부판을 2x1 크기의 두부로 잘라서 판다. 두부판은 칸마다 두부의 등급이 다르고, 2x1 두부 한 조각의 값은 그 조각이 덮는 두 칸의 등급으로 정해진다. 값은 다음 표를 따른다.

ABCDF
A108751
B86431
C74321
D53221
F11110

표는 대칭이라서 두 칸의 순서는 값에 영향을 주지 않는다. 예를 들어 A 칸과 C 칸을 함께 덮는 두부의 값은 7이고, D 칸과 B 칸을 함께 덮는 두부의 값은 3이다.

잘라낸 두부 조각은 가로나 세로로 이웃한 두 칸을 덮고, 서로 겹칠 수 없다. 어느 조각에도 들어가지 않은 한 칸짜리 두부는 값이 0이므로 버린다. 홍준이가 두부판 하나에서 얻을 수 있는 두부 값의 합의 최댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 두부판의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 1 이상 50 이하의 정수다.

다음 N개 줄에는 각각 M개의 문자가 공백 없이 주어진다. 각 문자는 그 칸에 있는 두부의 등급이고 A, B, C, D, F 중 하나다.

출력

첫째 줄에 잘라낸 두부 값의 합의 최댓값을 출력한다.

예제8

  1. 예제 1

    입력
    4 4
    ACFC
    FDAB
    BACF
    DBAC
    
    예상 출력
    37
    
  2. 예제 2

    입력
    1 1
    A
    
    예상 출력
    0
    
  3. 예제 3

    입력
    1 2
    AA
    
    예상 출력
    10
    
  4. 예제 4

    입력
    2 1
    F
    F
    
    예상 출력
    0
    
  5. 예제 5

    입력
    2 2
    AF
    FA
    
    예상 출력
    2
    
  6. 예제 6

    입력
    2 2
    AA
    FF
    
    예상 출력
    10
    
  7. 예제 7

    입력
    3 3
    ABC
    DFA
    CBD
    
    예상 출력
    20
    
  8. 예제 8

    입력
    1 7
    ABCDFAB
    
    예상 출력
    18