[Algorithm] 18. 층간소음

인트로

여러 숫자들 사이에서 조건을 만족하는 연속된 숫자의 개수를 구하는 문제이다. 

문제 이름은 층간소음이지만 어떠한 형태로 변형이 가능할 만큼 기본적인 문제라 알아보면 좋을 것 같다.

층간소음

문제

T편한 세상 아파트는 층간소음 발생 시 윗집의 발뺌을 방지하기 위해 애초 아파트를 지을 때 바닥에 진동센서를 설치했습니다.
이 센서는 각 세대의 층간 진동소음 측정치를 초단위로 아 파트 관리실에 실시간으로 전송합니다. 그리고 한 세대의 측정치가 M값을 넘으면 세대 호수와 작은 경보음이 관리실 모니터에서 울립니다.
한 세대의 N초 동안의 실시간 측정치가 주어지면 최대 연속으로 경보음이 울린 시간을 구하세요. 경보음이 없으면 -1를 출력합니다.

※ 입력설명
첫 줄에 자연수 N(10<=N<=100)과 M이 주어집니다.
두 번째 줄에 N개의 측정값(1000이하 자연수)이 초 순서대로 입력된다.

※ 출력설명
최대 연속 경보음이 울린 시간(초)을 출력하세요.

입력

10 90
23 17 120 34 112 136 123 23 25 113

출력

3

코드 설명

배열을 사용해도 되지만 for문을 n회 반복하며 숫자를 하나씩 받았다.

소음이 기준치(m)보다 크면 stack을 증가시키고 res와 비교해 최댓값으로 갱신한다.

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	int n, m, noise, stack = 0, res = -1;
	
	cin >> n >> m;
	
	for (int i = 0; i < n; i++)
	{
		cin >> noise;

		if (noise > m)
			if (++stack > res)
				res = stack;
		else
			stack = 0;
	}

	cout << res;
}