처음에 짠 코드
#include <iostream>
using namespace std;
int main() {
int N,M,i,num, res,max = -2147000000;
int cnt[100];
cin >> N >> M;
cnt[0] = 0;
for(i = 1; i <= N; i++){
cin >> num;
if(num > M){
cnt[i] = cnt[i-1] + 1;
}else {
cnt[i] = 0;
}
}
for(i = 1; i <= N; i++){
if(cnt[i] > max){
max = cnt[i];
}
}
cout << max;
return 0;
}
- M보다 크면 카운팅을 하는데, 카운팅한 값을 배열에 저장해놓고
- 다음 for문에서 배열을 체크해서 max값을 뽑아냈다.
- 카운팅을 하다가 M보다 작으면 0으로 떨어지기 때문에 무조건 배열에 저장해놓아야겠다고 생각했다.
더 효율적인 코드
#include <iostream>
using namespace std;
int main() {
int N,M,i,num, res,max = -2147000000;
int cnt;
cin >> N >> M;
for(i = 1; i <= N; i++){
cin >> num;
if (num > M) cnt++;
else cnt = 0;
if(cnt > max) max = cnt;
}
if(max == 0) cout << -1 << "\n";
else cout << max;
return 0;
}
- 바보인가보다.. 배열에 저장해놓을 필요 없이 그때그때 가장 큰 값을 그냥 바로 max에 넣어주면 되는거였다...
- 그럼 0으로 떨어져도 max에는 남아있으니까..
- 아직 멀었다 ㅠㅠㅠ