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

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

눈사람

면접 대비

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

요약
구간 등급을 나타내는 문자열과 길이 k가 주어질 때, 문자열 위를 이동하며 같은 구간을 여러 번 지나도 되도록 길이 k의 문자열을 만들 때 사전순으로 가장 작은 문자열을 구한다.
난이도

보통10점 중 6점

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

문제

눈사람을 만들고 싶은가? 물론 만들고 싶겠지! 그리고 마침내 집 앞 산책로에 눈이 충분히 쌓였다. 그런데 산책로 구간마다 눈의 품질이 다르다. 어떤 구간의 눈은 좋고, 하얗고, 잘 뭉쳐진다. 이런 구간을 등급 a 구간이라고 하자. 품질이 조금 더 나쁜 구간은 등급 b, 더 나쁜 구간은 등급 c가 되는 식이다.

눈사람의 몸통을 만들려면 눈덩이를 한 트랙 구간에서 다른 구간으로 앞이나 뒤로 굴려야 한다. 눈은 충분하므로 같은 구간으로 몇 번이든 다시 갈 수 있다. 물론 가장 좋은 눈으로 눈사람을 만들고 싶고, 눈덩이의 중심에 가까울수록 앞으로 만들 눈사람에게 눈의 품질이 더 중요하므로, 만드는 과정의 처음에 가장 좋은 구간들을 골라야 한다. 예를 들어 등급 c 구간에서 시작해 등급 a 구간, 그다음 등급 b 구간으로 눈덩이를 굴리면(cab), bab 눈덩이만큼 단단하지 않고, aca 눈덩이는 더 좋다.

트랙 구간의 등급은 문자열 ss에 적혀 있다. 첫 번째 눈덩이를 만들려면 트랙 구간을 kk번 지나가며 굴려야 한다. 눈사람용 눈덩이는 트랙의 어느 구간에서든 굴리기 시작할 수 있다. 가장 단단한 눈덩이를 얻으려면 어떤 구간들을 어떤 순서로 사용해야 하는가?

입력

첫째 줄에 소문자로 이루어진 문자열 ss가 주어진다. 이는 트랙 구간의 등급이다. 구간의 수는 2 이상 100 이하이다.

둘째 줄에 정수 kk가 주어진다(1≤k≤1041 \le k \le 10^4). 이는 눈덩이를 굴릴 구간의 수이다.

출력

눈덩이를 굴릴 순서대로 구간 등급을 나타내는 문자를 공백 없이 출력한다.

예제2

  1. 예제 1

    입력
    dcabe
    3
    
    예상 출력
    aba
    
  2. 예제 2

    입력
    bbb
    5
    
    예상 출력
    bbbbb