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
반응형
'문제풀이 > C++' 카테고리의 다른 글
[C++] 가위 바위 보 (0) | 2021.01.06 |
---|---|
[C++] 분노 유발자 (0) | 2021.01.05 |
[C++] 선생님 퀴즈 (0) | 2021.01.02 |
[C++] Anagram (0) | 2021.01.01 |
[C++] 소수의 개수 (0) | 2021.01.01 |