문제풀이/C++
[C++] 층간소음
Grizz
2021. 1. 5. 22:25
728x90
[목적]
N초 동안의 소음이 M값을 넘으면 경보음이 울리는 프로그램이다.
N초 동안의 1초마다의 실시간 측정치를 받아 최대 연속으로 경보음이 울린 시간을 출력하는 프로그램이다.
만약, 경보음이 없으면 -1을 출력한다.
[입력예제]
10 90
23 17 120 34 112 136 123 23 25 113
[출력예제]
3
10초동안 90을 넘는 소음이 들리게 될 시 경보음이 울리게 된다.
여기서 가장 경보음이 길게 울린 구간은 5~7초까지의 3초이였기에 3을 출력하였다.
[코드]
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int n, m, desi, cnt = 0, max = 0;
cin >> n >> m;
for (int i=0; i<n; i++){
cin >> desi;
if(desi > m) cnt++;
else cnt = 0;
if (cnt > max) max = cnt;
}
if(max == 0) cout << "-1";
else cout << max;
return 0;
}
1. 먼저 초에 해당하는 n값과 기준 측정치 m을 입력받는다.
2. 1초마다의 입력값을 받기 위해 for문을 작성한다.
3. for문 안에서 1초마다의 소음 측정치(desi)를 입력받는다.
4. 입력받은 측정치가 기준 측정치를 넘으면 카운트(cnt)를 +1 해준다.
5. 기준 측정치를 넘지 않은 경우에는 카운트를 0으로 초기화 시켜준다.
6. 연속으로 가장 길게 울린 시간을 알아보기 위해 카운트와 max를 비교하여 카운트가 클 경우 max에 값을 넣는다.
7. for문을 빠져나왔을 때 max값이 0이라면 경보음이 울리지 않은 것이므로 -1을 출력하고 그렇지 않다면 max값을 출력한다.
[실행 결과]
728x90
반응형