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

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

이진 마녀

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

요약
이진 문자열이 주어질 때 길이 13부터 1까지의 접미사를 이전 위치에서 찾아 가장 오른쪽 일치를 이용해 다음 L개 날짜를 예측한다.
난이도

보통10점 중 5점

유형
문자열, 문자열 매칭, 해시맵, 구현
정답자
아직 제출이 없습니다

문제

디지털 숲의 고요한 깊은 곳에 이진 마녀가 살고 있었다. 그녀는 미래의 어떤 날이든 비가 올지(00) 맑을지(11)를 예측할 수 있었다.

그녀의 마법은 다음 오래된 규칙을 따른다. a1,a2,…,aNa_1, a_2, \ldots, a_N을 이진 숫자의 수열이라 하자. ai=0a_i = 0은 ii번째 날이 비였음을, ai=1a_i = 1은 맑았음을 뜻한다. N+1N+1번째 날의 날씨를 예측하려면, 마지막 tt개의 원소로 이루어진 tt-접미사 aN−t+1,aN−t+2,…,aNa_{N-t+1}, a_{N-t+2}, \ldots, a_N을 살펴본다. 이 접미사가 위치 N−t+1N-t+1보다 앞에서도 나타난 적이 있다면, 즉 ak=aN−t+1, ak+1=aN−t+2, …, ak+t−1=aNa_k = a_{N-t+1},\ a_{k+1} = a_{N-t+2},\ \ldots,\ a_{k+t-1} = a_N을 만족하는 k≤N−tk \le N-t가 존재한다면, 예측값은 ak+ta_{k+t}가 된다.

tt-접미사가 여러 번 나타난다면 가장 오른쪽에 있는 것, 즉 kk가 최대인 것을 택한다. 예측을 위해 그녀는 t=13,12,…,1t = 13, 12, \ldots, 1의 순서로 tt-접미사를 시도하며, 처음으로 예측이 만들어지는 순간 멈춘다. 어떤 접미사도 찾지 못하면 비(00)로 예측한다. 하루보다 많은 날을 예측해야 한다면, 앞서 예측한 날들은 모두 맞았다고 가정한다. 즉 첫 예측값이 bb이면 aN+1=ba_{N+1} = b로 두고 N+1N+1개의 값을 바탕으로 N+2N+2번째 날을 예측하며, 이런 식으로 이어 간다.

마녀를 대신하여 이 예측 작업을 수행하는 프로그램을 작성하라.

입력

첫째 줄에 공백으로 구분된 두 정수 NN (1≤N≤1061 \le N \le 10^6)과 LL (1≤L≤10001 \le L \le 1000)이 주어진다. 둘째 줄에 00과 11로만 이루어진 길이 NN의 문자열이 주어진다.

출력

N+1,N+2,…,N+LN+1, N+2, \ldots, N+L번째 날에 대한 예측인 길이 LL의 문자열 하나를 출력한다.

예제3

  1. 예제 1

    입력
    10 7
    1101110010
    
    예상 출력
    0100100
    
  2. 예제 2

    입력
    5 5
    11111
    
    예상 출력
    11111
    
  3. 예제 3

    입력
    8 8
    01010101
    
    예상 출력
    01010101