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

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

계단 만들기 (Small)

시간 제한2초메모리 제한512 MB

요약
이웃한 열의 높이 차가 1 이하가 되도록 블록을 옮길 때 옮겨야 하는 블록 수의 최솟값을 구한다.
난이도

보통10점 중 6점

유형
그리디, 수학, 동적 계획법
정답자
아직 제출이 없습니다

문제

때는 2013년, 잼민이 지수는 마인크래프트 게임을 열심히 하고 있다.

지수가 하는 마인크래프트에서는 점프는 한 칸밖에 되지 않으며, 신기하게도 두 칸 이상부터 즉사 낙하 데미지가 들어간다! 따라서 한 곳에서 다른 한 곳으로 이동하기 위해서는 인접한 열의 높이 차가 11 이하여야만 한다. 또한, 모든 블록은 공중에 떠 있을 수 없다.

위 그림에서처럼 지수는 왼쪽 끝에서 오른쪽 끝으로 이동하고자 한다. 그런데 지금 상태에서는 인접한 열의 높이 차가 22 이상인 곳이 있어 지수의 캐릭터가 즉사하게 된다. 따라서 몇 개의 블록을 옮겨 블록의 높이 차가 최대 11이 되게 하고자 한다. 그러나 지수는 매우 게으른 성격이기 때문에 최소한의 블록만 옮기고 싶다.

위 예시에서는 두 개의 블록을 옮기면 모든 인접한 블록의 높이 차가 최대 11이 된다!

지수가 왼쪽 끝에서 오른쪽 끝으로 안전하게 도달하기 위해 블록을 옮길 때, 옮겨야 하는 블록의 최소 개수를 구하시오.

입력

첫 번째 줄에 정수 NN이 주어진다. NN은 마인크래프트 맵의 너비이다. (1≤N≤1001 \le N \le 100)

두 번째 줄에는 NN개의 수가 주어진다. ii 번째 수 h_ih\_i는 (i−1)(i - 1) 좌표에 놓인 블록의 높이이다. (1≤h_i≤1001 \le h\_i \le 100)

블록의 총 개수는 N⋅(N+1)/2N\cdot(N + 1) / 2를 넘지 않는다.

출력

첫 번째 줄에 옮겨야 하는 블록의 최소 수를 한 개의 정수로 출력하시오.

예제3

  1. 예제 1

    입력
    5
    1 3 1 3 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    5
    1 2 3 4 5
    
    예상 출력
    0
    
  3. 예제 3

    입력
    5
    3 4 2 1 3
    
    예상 출력
    1