내 코드
#include <iostream>
//한번에 풀었음 채점해보기
int main() {
int N, num, res = 0, cnt=0, max = -2147000000;
scanf("%d",&N);
for(int i = 1; i <= N; i++){
scanf("%d",&num);
if(num >= max){
max = num;
cnt++;
}else {
max = num;
cnt = 1;
}
printf("cnt : %d \n",cnt);
if(cnt > res) res = cnt;
}
printf("%d",res);
return 0;
}
- 채점은 안해보았으나 무리는 없어보인다.
- 지금까지 배웠던 가장 기초적인 방법으로 해결해보았다.
- 하지만 나열된 정수들이 있다고 했을 때, 서로 인접한 값들에 대한 비교를 해야할 때 응용할 수 있는 또 다른 솔루션이 있다.
효율적인 답
int main() {
int n, i, pre, now, cnt = 0, max = -2147000000;
scanf("%d", &n);
scanf("%d", &pre);
cnt = 1;
max = 1;
for(i = 2; i <= n; i++){
scanf("%d", &now);
if(now >= pre){
cnt++;
if(cnt > max) max = cnt;
}
else cnt = 1;
pre = now;
}
printf("%d\n",max);
}
- 나열된 정수에서 인접한 값에 대한 비교를 할 때,
- 이전 값은 pre 변수에 넣고, 현재 비교할 값은 now에 넣어 둘을 비교한다.
- 입력할 때, 약간 속임수(?) 야매(?)같은 방법으로 한줄에 값들을 쭉 입력하지만
- 가장 첫번째 값은 pre에 들어가고 나머지는 반복하여 now에 들어간다
- 야매 느낌이 좀 있지만 틀린 것은 아니기 때문에 나름 신박한 방법이라고 생각한다.
- 이 또한 다른 문제에 응용이 가능하다고 생각한다.