순서 섞기
의견: 0
정수가 저장된 크기 \(N\)인 배열 A가 있을 때, ‘순서 섞기’ 연산은 아래와 같이 정의된다.
- 크기가 \(N\)인 배열 B를 이용하여, 배열 A의 좌측 끝 또는 우측 끝에 있는 값 중 하나를 차례로 꺼내어 배열 B에 좌측부터 순서대로 저장한다. 아래의 그림에서 값이 꺼내지는 순서는 \(9\), \(34\), \(19\), \(12\), \(25\), \(4\), \(5\), \(36\)이다.
- 배열 B를 배열 A에 복사한다.

위에서 보인 그림처럼 순서 섞기 연산을 하면 배열 A의 값은 다음과 같이 변경된다.
(\(34\), \(19\), \(5\), \(36\), \(4\), \(25\), \(12\), \(9\)) =⇒ (\(9\), \(34\), \(19\), \(12\), \(25\), \(4\), \(5\), \(36\))
배열 A의 i번째 원소를 Ai라고 나타내자. “\(1 ≤ i < j ≤ N\)이면 \(A_i \le A_j\) 이다.”가 성립할 때, “배열 A는 단조증가한다”라고 말한다.
정수가 저장된 크기 \(N\)인 배열 A가 주어질 때, 배열 A가 단조증가하도록 정렬하기 위해 필요한 ‘순서 섞기’ 연산의 최소 횟수를 계산하는 프로그램을 작성하시오.
- \(1 ≤ N ≤ 300,000\)
- \(1 ≤ A_i ≤ 10^9\)
첫 번째 줄에 정수 \(N\)이 주어진다.
두 번째 줄에 배열 A에 저장된 \(N\)개의 정수 A\(1\), ..., A\(N\)이 공백을 사이에 두고 차례대로 주어진다.
배열 A가 단조증가하도록 정렬하기 위해 필요한 ‘순서 섞기’ 연산의 최소 횟수를 출력한다.
| 서브태스크 | 점수 | 설명 |
|---|---|---|
1 | 4점 | \(N ≤ 8\) |
2 | 9점 | 답이 \(2\) 이하 |
3 | 22점 | \(A_i ≤ 2\) |
4 | 18점 | \(모든\ A_i가\ 서로\ 다름\) |
5 | 47점 | 추가 제약 조건 없음 |
3
2 2 506
1 5 8 10 3 21riseoj 작성
출처 올림피아드 > 한국정보올림피아드 > KOI 2020 > 2차 대회 > 고등부 2번
평가 및 의견
순서 섞기
Log in to rate problems.
아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.
풀이 제출
순서 섞기