RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
KOI00052

카드 바꾸기

Gold V 골드 V
난이도
2s
시간 제한
1024MB
메모리 제한
7
맞았습니다!!
10
제출 수
70.0%
정답률
레이팅

의견: 0

설명

\(N\)개의 카드가 놓여있다. 편의상 가장 왼쪽에 있는 카드를 \(1\)번 카드, 그 다음에 있는 카드를 \(2\)번 카드 \(\dots\), 가장 오른쪽에 있는 카드가 \(N\)번 카드라고 하자.

\(N\)개의 카드에는 각각 정수가 하나씩 적혀있다. \(i\)번 카드에 적혀있는 수를 \(x_i\)라고 하자.

\(N\)개의 카드 중 일부에 적혀있는 수들을 적절히 바꾸어서, 왼쪽에서 오른쪽으로 갈수록 카드에 적혀있는 수들이 일정하게 증가하거나, 감소하거나, 또는 모든 수들이 같도록 하고 싶다.

카드에 적혀있는 수들을 바꿀 때는 정수 값으로만 바꿀 수 있으며, 바꾸는 횟수를 최소화해야 한다.

예를 들어, 아래의 그림과 같이 카드들이 주어졌다고 하자.

이 경우 \(3\)번 카드에 적혀있는 수를 \(3\)으로 바꾸면 아래와 같이 \(1\)씩 증가하도록 할 수 있고, 적혀있는 수를 바꾼 카드의 수는 \(1\)개이다.

다음과 같이 모든 카드에 적혀있는 수를 \(2\)가 되도록 할 수도 있다. 이때, 적혀있는 수를 바꾼 카드의 수는 \(2\)개이다.

가장 왼쪽에 있는 카드부터 가장 오른쪽에 있는 카드까지 각 카드에 적혀있는 수들이 순서대로 주어질 때, 조건을 만족하도록 하려면 바꿔야 할 카드 수의 최솟값을 구하여라.

제약
  • \(2 \le N \le 500\)
  • 모든 \(1 \le i \le N\)에 대해 \(-1\,000\,000 \le x_i \le 1\,000\,000\)
입력 형식

첫 번째 줄에 카드의 수 \(N\)이 주어진다.

두 번째 줄에는 각 카드에 적힌 수 \(x_i\)가 공백을 사이에 두고 순서대로 주어진다.

출력 형식

첫 번째 줄에 답을 출력한다.

서브태스크
서브태스크점수설명

1

3점

\(N \le 3\).

2

10점

답이 \(2\) 이하이다.

3

20점

최소한의 카드들만 바꿔서 조건을 만족하게 했을 때, 인접한 카드에 적힌 수의 차가 \(100\) 이하인 경우가 존재함이 보장된다.

4

67점

추가 제약 조건 없음.

예제 1
입력
4
1 2 2 4
출력
1
예제 2
입력
5
6 3 3 1 -1
출력
2
힌트

막혔나요? 코인으로 단계별 힌트를 잠금 해제하세요 — 첫 힌트는 가벼운 방향 제시, 뒤로 갈수록 더 많이 알려 줍니다. 문제를 풀면 모든 힌트가 무료로 공개됩니다.

문제 정보

riseoj 작성

출처 올림피아드 > 한국정보올림피아드 > KOI 2022 > 2차 대회 > 초등부 2번 / 중등부 1번

평가 및 의견

카드 바꾸기

개요
출제자 난이도 Gold V 골드 V 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

카드 바꾸기

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8