n개의 요소가 있는 배열 A가 있고 다른 값 c가 있다고 가정합니다. 우리 시스템에는 문자를 입력할 수 있는 미친 워드 프로세서가 있지만 연속 c초 동안 입력하지 않으면 작성된 모든 문자가 제거됩니다. A[i]는 i번째 문자를 입력한 시간을 나타냅니다. n 문자를 모두 입력한 후 화면에 남아 있을 최종 문자 수를 찾아야 합니다.
따라서 입력이 A =[1, 3, 8, 14, 19, 20]과 같으면; c =5이면 출력은 3이 됩니다. 두 번째 8에서는 화면에 3개의 단어가 있기 때문입니다. 그리고 13초에서 모든 것이 사라집니다. 14초와 19초에서 두 글자를 더 입력하고, 마지막으로 두 번째 20초에서 한 글자를 더 입력하여 총 3개의 글자가 화면에 남습니다.
단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
s := 1 n := size of A for initialize i := 1, when i < n, update (increase i by 1), do: if (A[i] - A[i - 1]) <= c, then: (increase s by 1) Otherwise s := 1 return s
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A, int c) { int s = 1; int n = A.size(); for (int i = 1; i < n; i++) { if ((A[i] - A[i - 1]) <= c) { s++; } else { s = 1; } } return s; } int main() { vector<int> A = { 1, 3, 8, 14, 19, 20 }; int c = 5; cout << solve(A, c) << endl; }
입력
{ 1, 3, 8, 14, 19, 20 }, 5
출력
3