문제출처 : https://www.acmicpc.net/problem/2872
code
#include <stdio.h> #include <stdlib.h> int main() { int N, i, index=0, cnt = 0; int* arr; scanf("%d", &N); arr = (int*)malloc(sizeof(int) * N); for (i = 0; i < N; i++) { scanf("%d", &arr[i]); if (arr[i] == N) index = i; } int book = N; for (i = index-1; i >= 0; i--) { if (arr[i] == book - 1) book--; else cnt++; } cnt += N - index - 1; printf("%d", cnt); free(arr); return 0; }
정렬하는 문제라서 정렬알고리즘같지만, 정렬안해고 그리디알고리즘만으로 풀수있다.