반응형
14659번: 한조서열정리하고옴ㅋㅋ
첫째 줄에 봉우리의 수 겸 활잡이의 수 N이 주어진다. (1 ≤ N ≤ 30,000) 둘째 줄에 N개 봉우리의 높이가 왼쪽 봉우리부터 순서대로 주어진다. (1 ≤ 높이 ≤ 100,000) 각각 봉우리의 높이는 중복 없이
www.acmicpc.net
greedy 문제였습니다.
풀이방법
1. i번째 봉우리에서 시작합니다. 그 다음 i+1봉우리부터 끝까지 loop를 돌며 i번째 봉우리의 높이보다 작은 j번째 봉우리들의 개수를 세줍니다. 조건에 만족할 때마다 ans에 세준 개수를 저장합니다. 만약 반대라면 구간을 건너뛰기 위해 i = j-1을 저장하고 break;해줍니다.
2. ans를 출력합니다.
Code
#include <bits/stdc++.h>
using namespace std;
int n, ans;
int mountain[300001];
int main(){
cin >> n;
for(int i = 0; i < n; i++) cin >> mountain[i];
for(int i = 0; i < n; i++){
int cnt = 0;
for(int j = i+1; j < n; j++){
if(mountain[i] >= mountain[j]) cnt++, ans = max(ans,cnt);
else { i = j-1; break; }
}
}
cout << ans << '\n';
}
'Algorithm > Greedy' 카테고리의 다른 글
(C++) - 백준(BOJ) 1138번 : 한 줄로 서기 (0) | 2021.05.02 |
---|---|
(C++) - 백준(BOJ) 1339번 : 단어 수학 (0) | 2021.04.17 |
(C++) - 백준(BOJ) 1080번 : 행렬 (2) | 2021.04.01 |
(C++) - 백준(BOJ) 1946번 : 신입 사원 (0) | 2021.03.31 |
(C++) - 백준(BOJ) 1049번 : 기타줄 (0) | 2021.03.29 |