| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 1024 MB | 1110 | 364 | 293 | 33.951% |
$N$개의 서로 다른 정수를 가진 배열 $A$가 주어진다.
당신은 어제 공격력이 양의 정수 $k$인 칼을 받았다. 이 칼이 있으면 배열에 아래와 같은 연산을 적용할 수 있다.
당신은 배열 $A$에 이 연산을 원하는 횟수만큼 적용하여 (한 번도 적용하지 않아도 괜찮다) 오름차순으로 정렬하려고 한다.
$k$의 값에 따라 이 연산을 적절히 적용하면 $A$를 정렬하는 것이 가능할 수도 있고, 연산을 어떻게 잘 적용해도 정렬할 수 있는 방법이 없을 수도 있다.
이 때, 배열 $A$를 정렬할 수 있는 가장 작은 양의 정수 $k$의 값을 구하는 프로그램을 작성하자.
첫째 줄에 배열의 길이 $N$이 주어진다.
둘째 줄에 $N$개의 정수 $A_1, A_2, \cdots , A_n$이 공백으로 구분되어 주어진다.
주어진 수열을 오름차순으로 만들 수 있는 가장 작은 양의 정수 $k$의 값을 출력한다.
5 1 2 3 4 5
1
6 4 5 6 1 2 3
2
4 5 6 / 1 2 3으로 나눈 뒤, 1 2 3 / 4 5 6으로 재배열하면 된다.
6 3 4 5 6 1 2
2
3 / 4 5 6 1 2
4 5 6 / 1 2 3
1 2 3 4 5 6