만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

더 흔한 타일 색칠 문제

면접 대비

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

요약
N×M 글자 격자를 K×K 블록으로 나눌 때, 모든 블록이 같은 모양이 되도록 다시 칠해야 하는 칸의 최소 개수를 구하고 그때의 격자를 출력합니다.
난이도

보통10점 중 4점

유형
배열, 구현, 그리디
정답자
아직 제출이 없습니다

문제

N×MN\times M 크기의 타일이 있다. 타일의 ii행 jj열에 해당하는 칸은 처음에 d_i,jd\_{i,j} 색으로 색칠되어 있다. 타일의 색상은 하나의 알파벳 대문자로 표현된다.

주어진 타일을 K×KK\times K 크기의 작은 타일들로 겹치지 않게 나눴을 때, 나눠진 타일들의 색상 배치가 모두 같아지도록 타일의 일부 칸을 골라 다시 색칠하고자 한다. 칸을 다시 색칠하는 데 사용할 수 있는 색상도 하나의 알파벳 대문자로 표현할 수 있는 색상 중 하나여야 한다.

최소 몇 개의 칸을 다시 색칠해야 하는지 구하고, 이를 만족하는 타일의 색상 배치를 아무거나 하나 출력하라.

입력

첫째 줄에 세 정수 NN, MM, KK가 공백으로 구분되어 주어진다. (1≤N,M,K≤500;(1\le N,M,K\le 500; N,MN,M은 KK의 배수이다))

다음 NN개의 줄에는 타일의 ii행 색상 배치를 의미하는 길이 MM의 문자열 d_id\_i가 주어진다. d_id\_i는 알파벳 대문자로만 이루어져 있다.

출력

첫째 줄에는 다시 칠해야 하는 칸의 최소 개수를 출력한다.

다음 NN개의 줄에는 새로 칠한 타일의 ii행 색상 배치를 의미하는 길이 MM의 문자열을 출력한다. 출력하는 문자열 역시 모두 알파벳 대문자로만 이루어져 있어야 한다.

예제1

  1. 예제 1

    입력
    4 6 2
    ABCBAB
    BBACCA
    BPAZBB
    BBAABB
    
    예상 출력
    11
    ABABAB
    BBBBBB
    ABABAB
    BBBBBB