이진 문자열
면접 대비시간 제한0.5초메모리 제한512 MB
이진 문자열에서 앞에 0이 오지 않고 값이 K 이하가 되도록 최소 개수의 비트를 지우는 문제이다.
문제
이진 문자열은 0과 1로 이루어진 비어 있지 않은 수열이다. 예를 들어 010110, 1, 11101 등이 있다. Ayu는 앞에 0이 없는 이진 문자열 를 좋아한다. Ayu는 계산기로 를 십진수 표현으로 바꾸려고 한다.
안타깝게도 Ayu의 계산기는 보다 큰 정수를 다룰 수 없고, 그런 정수를 입력하면 고장 난다. 따라서 Ayu는 남은 비트의 순서를 유지하면서 에서 0개 이상의 비트를 지워, 그 십진수 표현이 이하가 되도록 만들어야 할 수도 있다. 이때 만들어지는 이진 문자열에도 앞에 0이 없어야 한다.
Ayu의 요구를 만족시키기 위해 에서 지워야 하는 비트 수의 최솟값을 구하자.
예를 들어 이고 이라 하자. 은 십진수로 101이므로, 이하로 만들기 위해 에서 여러 비트를 지워야 한다. 3번째, 5번째, 6번째 최상위 비트를 지우면 이 된다. 의 십진수 표현은 13이고, 이는 이하이다. 이 예에서 지운 비트는 3개이며, 이것이 최솟값이다. (비트를 2개만 지우면 길이가 5인 이진 문자열이 되는데, 길이가 5인 이진 문자열의 값은 십진수로 적어도 16이다.)
입력
첫 번째 줄에 Ayu의 계산기 한계를 나타내는 정수 가 주어진다. ()
두 번째 줄에 Ayu가 좋아하는 이진 문자열 가 주어진다. ()
에는 앞에 0이 없다고 가정해도 된다.
출력
에서 지워야 하는 비트 수의 최솟값을 한 줄에 출력한다.