파일 업로드

가죽 패턴 변경하기

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

최신 패션 트렌드가 가죽에 두 개의 반점이 있는 가방이라는 이야기를 들은, 패션 디자이너인 미진은 두 개의 반점이 있는 가방들을 전부 구입했습니다. 하지만 패션 트렌드는 빠르게 변하는 경향이 있고, 현재 가장 인기 있는 패션은 오직 하나의 반점이 있는 가방입니다!

미진은 가방의 두 반점을 하나의 반점으로 합치는 방식으로 가방들을 모두 칠하고자 합니다. 가방의 가죽은 이러한 N x M (1 <= N,M <= 50) 문자 그리드로 표현됩니다:

................
..XXXX....XXX...
...XXXX....XX...
.XXXX......XXX..
........XXXXX...
.........XXX....

여기서 각 'X'는 점의 일부를 나타냅니다. 두 'X'는 수직 또는 수평으로 인접하면 같은 점에 속합니다(대각선 인접은 세지 않습니다), 그래서 위에 있는 그림은 정확히 두 개의 점을 가지고 있습니다. 미진의 모든 가방들은 정확히 두 개의 반점을 가지고 있습니다.

미진은 최소한의 페인트만 사용하여 두 반점을 하나로 합치고자 합니다. 예를 들어, 위의 예시에서는 'X'로 새로 칠해주는 문자들 중 3개만 추가로 칠하면 됩니다 (새로운 문자들은 아래에서 '*'로 표시되어있어 보기 쉽게 표시되었습니다).

................
..XXXX....XXX...
...XXXX*...XX...
.XXXX..**..XXX..
........XXXXX...
.........XXX....

두 반점을 하나의 큰 반점으로 합치기 위해 새로 칠해야 하는 'X'의 최소 개수를 미진이 결정하도록 도와주십시오.

💻 입력
  • 첫 번째 줄: 두 개의 공백으로 구분된 정수, N과 M.
  • 두 번째 줄...1+N 번째 줄 : 각 줄에는 가방의 가죽 패턴의 한 행을 지정하는 'X'와 '.'로 구성된 길이 M의 문자열이 포함됩니다.
🖨️ 출력
  • 첫 번째 줄: 한 개의 큰 반점을 얻기 위해 가죽 패턴에 추가해야 할 새로운 'X'의 최소 개수.

💻 예제 입력 1
6 16
................
..XXXX....XXX...
...XXXX....XX...
.XXXX......XXX..
........XXXXX...
.........XXX....
🖨️ 예제 출력 1
3

출처: USACO 2011 November Contest, Bronze Division Problem 4. Cow Beauty Pageant (Bronze Level)