티스토리 뷰

반응형

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

 

14659번: 한조서열정리하고옴ㅋㅋ

첫째 줄에 봉우리의 수 겸 활잡이의 수 N이 주어진다. (1 ≤ N ≤ 30,000) 둘째 줄에 N개 봉우리의 높이가 왼쪽 봉우리부터 순서대로 주어진다. (1 ≤ 높이 ≤ 100,000) 각각 봉우리의 높이는 중복 없이

www.acmicpc.net


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 그리디 알고리즘

 


 

⊙ 문제 접근 과정

 

자신보다 낮은 값만 잡을 수 있다. 간단하지만 주의해야 할 조건이 있다.

나보다 높은 값을 만나면 break를 해야한다는 것!


 

⊙ 문제 풀이

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
#define MAX 30001

int N;
int arr[MAX]={0,};
vector<int> v;

int main() {
    cin >> N;
    
    for(int i=0;i<N;i++) {
        int x;
        cin >> x;
        v.push_back(x);
    }

    int result=-1;

    for(int i=0;i<N-1;i++) {
        for(int j=i+1;j<N;j++) {
            if(v[i]>v[j]) arr[i]++;
            else break;
        }
        result=max(arr[i],result);
    }
    cout << result;
    
}

⊙ 결과

 


 

 

⊙ 마무리

 

 

NONE

 

좋아요 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/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
글 보관함