최소 문자열 뽑기

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

요약
소문자로 채워진 N x M 배열에서 K개의 열을 가리고 남은 글자를 행 우선으로 읽을 때, 사전 순으로 가장 앞서는 문자열을 찾는다.
난이도

보통10점 중 6점

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

문제

크기가 NN x MM인 2차원 배열이 주어진다. 배열의 원소의 값은 알파벳 소문자이다.

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

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

acb
zud
pqr

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

입력

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

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

출력

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

예제1

  1. 예제 1

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