만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

열 정렬

면접 대비

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

요약
서로 다른 정수로 이루어진 배열을 오름차순으로 정렬하는 데 필요한 최소 교환 횟수를 구합니다.
난이도

쉬움10점 중 3점

유형
배열, 정렬
정답자
아직 제출이 없습니다

문제

열정이 넘치는 김정렬은 배열을 항상 오름차순으로 정렬해야 직성이 풀리는 강박증이 있다.

하지만 너무 열정적으로 정렬한 나머지, 때로는 제대로 정렬하지 못하기도 한다.

김정렬의 친구인 여러분은 정렬이가 눈치채기 전에 배열을 다시 정렬해 주려고 한다. 다만 배열을 많이 바꾸면 정렬이가 눈치채고 낙담하게 된다.

배열에 적용할 수 있는 연산은 임의의 두 값을 뽑아서 서로 교환하는 것이 전부이다. 정렬이가 눈치채지 못하게 배열을 정렬하는 데 필요한 연산 횟수의 최솟값을 구하자.

입력

첫 번째 줄에 배열의 크기 NN (4≤N≤100 0004 \le N \le 100\,000)이 주어진다.

두 번째 줄에 배열의 원소 A1,A2,⋯ ,AnA_1, A_2, \cdots, A_n (−109≤Ai≤109-10^9 \le A_i \le 10^9, i≠ji \neq j이면 Ai≠AjA_i \neq A_j)이 주어진다.

배열의 원소는 모두 정수이다.

출력

배열에 적용할 최소 연산 횟수를 출력한다.

예제3

  1. 예제 1

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

    입력
    7
    1 300 2 9012 3 400 0
    
    예상 출력
    4
    
  3. 예제 3

    입력
    15
    86 30 24 13 82 62 85 27 11 55 97 39 81 41 63
    
    예상 출력
    13