만드는 중입니다

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

최소 문자열 뽑기

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

요약
N×M 크기의 알파벳 격자에서 열을 정확히 K개 가립니다. 남은 칸을 행 순서대로 읽어 만들 수 있는 문자열 중 사전순으로 가장 작은 문자열을 구합니다.
난이도

보통10점 중 7점

유형
그리디, 문자열, 스택
정답자
아직 제출이 없습니다

문제

크기가 N×MN \times M인 2차원 배열이 주어진다. 배열의 원소는 알파벳 소문자이다.

배열에서 문자열을 뽑는 방법은 다음과 같다. 먼저 MM개의 열 중 KK개의 열을 가린다. 그다음 배열에 보이는 원소들을 좌측 상단부터 우측 하단까지 알파벳을 이어 붙인다. 이때 열이 증가하고 그 다음 행이 증가하는 순서대로 붙인다.

예를 들어, 아래에 다음과 같은 2차원 배열이 존재하고 K=1K=1일 때, 뽑을 수 있는 문자열은 cbudqr, abzdpr, aczupq로 총 33가지이다.

acb
zud
pqr

KK개의 열을 모두 가려야 하며, 어떤 열을 가릴지에 따라 다양한 문자열이 나올 수 있다. 이때 사전 순으로 가장 앞서는 문자열을 구해보자.

입력

입력의 첫 줄에 2차원 배열의 크기를 나타내는 NN, MM과 가려야 하는 열의 개수를 나타내는 KK가 공백으로 구분된 정수로 주어진다. (1≤N≤1 000 000;2≤M≤1 000 000;2≤N×M≤2 000 000;1≤K<M)(1 \le N \le 1\,000\,000; 2 \le M \le 1\,000\,000; 2 \le N \times M \le 2\,000\,000; 1 \le K < M)

입력의 둘째 줄부터 NN개의 줄에 걸쳐, 각 줄마다 MM개의 알파벳 소문자가 공백으로 구분되어 주어진다.

출력

뽑을 수 있는 문자열 중 사전 순으로 가장 앞서는 문자열을 출력한다.

예제1

  1. 예제 1

    입력
    3 3 1
    a c b
    z u d
    p q r
    
    예상 출력
    abzdpr