티스토리 뷰

https://www.acmicpc.net/problem/2872

 

2872번: 우리집엔 도서관이 있어

상근이는 컴퓨터 공학의 일인자가 되기 위해 책을 매우 많이 구매했다. 하지만, 집에 책장이 없어서 책을 탑처럼 쌓아놓고 있다. 오늘은 오랜만에 상근이가 집에서 휴식을 취하는 날이다. 상근

www.acmicpc.net

 

이미 정렬되어 있는 숫자가 몇개인지를 알아야한다.

예를들어 input이 다음과 같다면

1 3 4 2

이미 정렬되어 있는 숫자는 3,4이다. 

이유는 가장 큰 수는 4고 위로 올라가면서 4보다 1작은 3이 있다. 3보다 1 작은 2는 3위에 존재하지 않는다.

 

다른 예로 input이 다음과 같다면

3 1 4 5 2

이미 정렬되어 있는 숫자는 3,4,5다. 

가장 큰 수는 5고 위로 올라가면서 4를 찾고, 올라가면서 또 4보다 1 작은 3을 찾을수 있다.

따라서 이미 정렬되어 있는 3,4,5를 뺀 나머지 숫자들을 큰 수부터 맨위로 올려주면 된다.

 

즉 답은 n - 이미 정렬되어 있는 숫자의 갯수다

 

 

#include <iostream>
#include <vector>
using namespace std;

int n;
vector<int> v;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);

    cin >> n;
    v.resize(n);
    for(int i = 0; i < n; i++)
        cin >> v[i];

    int target = n;
    int cnt = 0;
    for(int i = n-1; i >= 0; i--)
    {
        if(v[i] == target)
        {
            cnt++;
            target--;
        }
    }
    cout << n-cnt;
}

'PS' 카테고리의 다른 글

백준 1417. 국회의원 선거  (0) 2021.08.30
백준 13164. 행복 유치원  (0) 2021.08.28
백준 2262. 토너먼트 만들기  (0) 2021.08.27
백준 14241. 슬라임 합치기  (0) 2021.08.26
백준 15922. 아우으 우아으이야!!  (0) 2021.08.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함