숫자로 구성된 문자열이 주어진다. 문자 사이에 공백을 적절히 추가해서 개 이상의 부분문자열로 나누려고 한다.
단, 아래 조건을 만족해야 한다.
각 부분문자열이 나타내는 수가 오름차순이라는 것은 모든 인접한 두 수에 대해 오른쪽의 수가 왼쪽의 수보다 크거나 같음을 의미한다. 여기에서 한 번의 예외를 둘 수 있다는 것은 최대 하나의 경우에 대해 왼쪽의 수가 오른쪽의 수보다 클 수 있음을 의미한다.
예를 들어, 33133
의 경우,
부분문자열이 나타내는 수가 오름차순이 되도록 공백을 추가하여
가장 많은 부분문자열을 만들 수 있는 경우는 3
, 3
, 133
,
또는 3
, 31
, 33
이다.
그러나 첫 번째 조건에서 한 번의 예외를 둘 수 있으므로, 이를 고려하면
3
, 3
, 1
, 3
, 3
이 된다.
부분문자열이 0
으로 시작할 수 있음에 유의하라.
예를 들어, 103201
을
1
, 03
, 201
로 나눌 수 있고,
이 부분문자열들이 나타내는 수는 각각
1
, 3
, 201
이다.
주어진 문자열에 대해 조건을 만족하며 부분문자열로 나눌 때, 부분문자열의 개수를 구하는 프로그램을 작성하라.
첫 줄에 문자열의 수를 나타내는 정수 가 주어진다. ()
이어지는 개의 줄에는 차례로 각 문자열에 대한 정보들이 주어진다.
개의 줄의 번째 줄에 번째 문자열의 길이를 나타내는 정수 가 주어진다. ()
개의 줄의 번째 줄에
번째 문자열이 주어진다.
이 문자열은 0
부터 9
까지 숫자로 이루어져 있다.
입력으로 주어지는 문자열의 길이 합, 즉, 는 을 넘지 않는다.
개의 줄에 걸쳐 답을 출력한다. 번째 줄에 번째 문자열을 조건을 만족하며 부분문자열로 나눌 때, 부분문자열의 개수를 출력한다.
2 5 33133 6 103201
5 4
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 23점
;
종류 2: 31점
종류 3: 5점
문자열을 구성하는 숫자는 오름차순이다. 예: 03355
, 22222
종류 4: 17점
문자열을 구성하는 숫자는 내림차순이다. 예: 999888
, 210000
종류 5: 8점
문자열은 1
부터 9
까지 숫자로 이루어져 있다.
종류 6: 16점
추가적인 제한 조건이 없음.