만드는 중입니다

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

나연 정렬

면접 대비

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

요약
나연 정렬로 배열을 오름차순으로 정렬하는 데 필요한 스택의 최소 개수를 구합니다.
난이도

보통10점 중 5점

유형
배열, 이분 탐색, 동적 계획법
정답자
아직 제출이 없습니다

문제

자료구조 수업을 열심히 들은 나연이는 새로운 정렬 알고리즘을 고안하고 자신의 이름을 따 나연 정렬이라고 이름 붙였다. 정렬할 배열 A=[a1,a2,⋯ ,aN]A=[a_1,a_2,\cdots,a_N]이 주어지면 나연 정렬은 다음과 같이 동작한다.

  1. 빈 스택을 원하는 만큼 선언한다.
  2. a1a_1부터 aNa_N까지 각 원소를 순서대로 원하는 스택에 삽입한다.
  3. 빈 배열 BB를 선언한다.
  4. 모든 스택이 빌 때까지, 원하는 스택에서 원소를 하나 뽑아 BB의 맨 뒤에 삽입하는 작업을 반복한다.

나연 정렬로 배열을 정렬할 수 있는지는 배열과 사용하는 스택의 개수에 따라 달라진다. 예를 들어 A=[9,2,8,7,1]A=[9,2,8,7,1]이라면 3개의 스택에 각각 [9,8][9,8], [2][2], [7,1][7,1]을 담고, 세 번째, 두 번째, 세 번째, 첫 번째, 첫 번째 스택 순서로 원소를 뽑으면 오름차순으로 정렬된 배열을 얻는다. 스택이 두 개여도 AA를 정렬할 수 있지만, 스택이 하나뿐이면 오름차순으로 정렬할 수 없다.

나연이는 주어진 배열을 오름차순으로 정렬하는 데 필요한 스택의 최소 개수를 구해 주면 HCPC에서 푼 문제 수를 몰래 하나 늘려 주겠다고 제안했다. 누구보다 먼저 문제를 풀고 HCPC 우승에 한 걸음 다가가 보자.

입력

첫째 줄에 배열 AA의 길이를 나타내는 정수 NN이 주어진다. (1≤N≤500,0001 \le N \le 500,000)

둘째 줄에 NN개의 정수 a1,a2,⋯ ,aNa_1, a_2, \cdots, a_N이 공백으로 구분되어 주어진다. (1≤ai≤1091 \le a_i \le 10^9)

출력

첫째 줄에 AA를 오름차순으로 정렬하는 데 필요한 최소 스택 개수를 출력한다.

예제2

  1. 예제 1

    입력
    5
    9 2 8 7 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    10
    10 9 8 7 6 5 4 3 2 1
    
    예상 출력
    1