숫자 지우기


답안 제출

Points: 9
시간 제한: 2.0s
메모리 제한: 256M

문제 유형
허용된 언어
C, C++, Python

1부터 N까지의 자연수가 무작위로 섞여 있는 순열이 주어집니다.

이 순열에서 1부터 N까지의 숫자를 크기 순서대로(1, 2, 3, ...) 차례대로 찾아 제거해야 합니다.

순열의 첫 번째 원소부터 마지막 원소까지 왼쪽에서 오른쪽으로 한 번씩 훑어보며 숫자를 지워나갈 수 있습니다.

한 번 순열을 끝까지 훑는 과정을 '회차'라고 합니다. 각 회차마다 현재 지워야 할 숫자가 나타나면 즉시 지웁니다.

만약 다음 지워야 할 숫자가 현재 지운 숫자보다 순열의 더 뒤쪽에 있다면 한 회차에 연속해서 지울 수 있지만, 더 앞쪽에 있다면 다음 회차에 지워야 합니다.

1부터 N까지의 모든 숫자를 순서대로 지우기 위해 순열을 총 몇 번 훑어야 하는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 순열의 크기 N이 주어진다.

둘째 줄에는 1부터 N까지의 정수가 공백을 사이에 두고 무작위 순서로 주어진다. 순열의 모든 숫자는 중복 없이 정확히 한 번씩만 등장합니다.

출력

모든 숫자를 순서대로 지우는 데 필요한 최소 회차 수를 출력한다.

제약 조건

1 ≤ N ≤ 200,000

예제 입력 1

5
4 2 1 5 3

예제 출력 1

3

코멘트


  • 1
    김찬희  2026년 6월 6일 오후 6시 43분에 작성되었습니다 수정됨