BOJ 32789 Champernowne Subsequence

BOJ 32789 Champernowne Subsequence

문제 링크:

문제 내용

양의 정수 kk에 대해, 1부터 kk까지의 모든 양의 정수를 순서대로 이어 붙여서 얻는 정수를 kk번째 Champernowne 수라고 합니다.

숫자로만 이루어진 임의의 문자열이 주어질 때, kk번째 Champernowne 수가 그 문자열을 부분 수열로 갖는 가장 작은 kk를 구하세요. 그러한 kk는 항상 존재함을 증명할 수 있습니다.

입력

첫 줄에 문자열의 길이 nn이 주어지고, 둘째 줄에 숫자로만 이루어진 길이 nn의 문자열이 주어집니다. (1n1051 \le n \le 10^5)

출력

문제의 정답을 출력합니다.

문제 풀이

스포일러

1부터 증가시키면서 주어진 문자열에 나오는 숫자가 순서대로 나올 때마다 제거해 주고, 문자열 전체가 제거된 시점의 kk를 출력하면 됩니다.

이것이 충분히 빠른 이유는, 0부터 9까지의 모든 숫자는 k,k+1,,k+9k, k+1, \cdots, k+9 중 하나의 일의 자리로 반드시 등장하기 때문에, 정답이 100만을 넘지 않기 때문입니다.

Last updated on