[c/c++] 백준 14659 (Bronze 1)

은동·2023년 1월 23일
0

Baekjoon

목록 보기
11/49

🔨 문제

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

<요약>
한조 서열 정리ㅋㅋㅋ 문제 이름도 참 기엽다

n개의 봉우리를 입력 받고 왼쪽에서 오른쪽으로 이동하면서 입력 받은 봉우리보다 작은 봉우리는 몇 개 있는지 확인하는 문제! 여기서의 조건은 처음 출발한 봉우리보다 큰 봉우리를 만나면 용이 지나갈 수 없어서 그 상태로 끝나는 거고, 그리고 그 용이 넘어갈 수 있는 출발지보다 작은 봉우리는 몇 개인지 최댓값을 찾는 문제이다!


🔨 해결방법

  1. n개의 봉우리를 입력 받을 arr 배열과 처음 시작하는 봉우리를 저장할 height변수, 처음 봉우리보다 작은 봉우리를 셀 cnt변수, cnt값과 비교해서 최댓값을 저장할 result변수 선언

  2. 조건문을 통해 처음 봉우리보다 작거나 같은 봉우리가 몇 개 있는지 카운트 하고, 처음 봉우리보다 큰 봉우리를 만나면 카운트 값과 result값을 비교하여 최댓값을 다시 result에 저장

	result = max(result, cnt);	
    // 두 값 중 최댓값을 반환, 데이터 타입이 같아야 함

🔨 코드

#include <iostream>
using namespace std;

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

	int n, height=0,result=0, cnt=0;
	cin >> n;
	int arr[30001] = { 0 };

	for (int i = 0; i < n; i++) {
		cin >> arr[i];
	}
	height = arr[0];
	for (int i = 1; i < n; i++) {
		if (height >=arr[i]) {
			cnt++;
		}
		else {
			result = max(result, cnt);
			height = arr[i];
			cnt = 0;
		}
	}
	cout << max(result, cnt);

	return 0;
}
profile
자자 선수입장~

0개의 댓글