번째 수부터 번째 수까지가 오름차순으로 배열되어있기 위해서는, 를 만족하는 모든 정수 에 대해 을 만족해야 합니다.
조건은 인접한 두 수를 비교하는 것만으로 판단할 수 있습니다. 즉, 를 을 만족하는지 여부에따라 True
혹은 False
로 나타내면, 번째 수부터 번째 수까지가 오름차순이라는 것은, 모두가 True
라는 것입니다.
이런 를 세는 방법은 여러가지가 있습니다.
True
의 블럭을 생각해봅시다. 이 블럭 내부에서 아무렇게나 시작점과 끝점을 잡는 것이 됩니다. 블럭의 길이가 이라면, 서로 다른 두 시작점과 끝점을 잡는 경우의 수는 입니다.답은 에서 연속된 True
블럭 길이 에 대해 를 모두 더한 것에 을 더한 것이 됩니다. 모든 연산은 에 처리할 수 있습니다.