[기억할 내용들]
- 나는 배열로 값들을 이미 저장해놓고 풀었는데 오히려 이게 독이 되었다. 반복문 돌면서 그냥 값 하나씩 받아오고 이 받아온 값을 조건문 돌려서 바로 로직을 수행하면 더 쉽고 간결하게 풀 수 있었다.
- 이전값이랑 현재값을 비교해서 이전값이 현재값보다 작거나 같으면 cnt 를 증가시키고 이 cnt 가 max 값보다 크면 max 값을 cnt 값으로 업데이트 해주는 식으로 문제를 해결한다.
- 이전값이 현재값보다 크다면 cnt 값을 다시 1로 바꿔주면 간단하게 풀 수 있다.
- 항상!! 문제 풀 때마다 어떻게 하면 쉽게 풀 수 있을지를 생각하자!!!!
[나의 코드]
#include <iostream>
#include <stdio.h>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
int n;
cin >> n;
vector<int> table(n);
for (int i = 0; i < n; i++)
cin >> table[i];
int max = 1;
int cnt = 1;
int idx = 0;
int prev = table[0];
int count = 1;
while (idx + count < table.size()) {
if (table[idx + count] >= prev) {
cnt++;
}
else {
idx = idx + count;
cnt = 1;
count = 0;
}
prev = table[idx + count];
count++;
if (cnt > max)
max = cnt;
}
cout << max << "\n";
return 0;
}
[강의 코드]
#include <iostream>
#include <stdio.h>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
int main() {
int n, i, pre, now, cnt = 0, max = -2147000000;
scanf_s("%d", &n);
scanf_s("%d", &pre);
cnt = 1;
max = 1;
for (i = 2; i <= n; i++) {
scanf_s("%d", &now);
if (now >= pre) {
cnt++;
if (cnt > max) max = cnt;
}
else cnt = 1;
pre = now;
}
printf("%d\n", max);
return 0;
}
[의견]
배열을 안 쓰고도 풀 수 있다는 점에서 놀랐고, 오히려 배열을 이용하지 않는게 문제를 더 쉽게 풀 수 있다는 점에서 다시 한 번 놀랐다. 열심히 공부하자!!!!!