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

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

더 흔한 타일 색칠 문제

시간 제한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