n개의 요소가 있는 배열 A가 있다고 가정합니다. A[i]는 i번째 학생의 프로그래밍 기술을 나타냅니다. A의 모든 요소는 고유합니다. 우리는 다음과 같은 방식으로 그들을 팀으로 나누고 싶습니다 -
-
|A[i] - A[j]|와 같은 두 명의 학생 i와 j가 없습니다. =1은 같은 팀에 속함
-
팀 수는 가능한 한 최소입니다.
따라서 입력이 A =[2, 3, 4, 99, 100]과 같으면 그룹이 [2, 3, 4] 및 [99, 100]
이므로 출력은 2가 됩니다.단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
dem := 1 sort the array A for initialize i := 1, when i < size of A, update (increase i by 1), do: if A[i] - A[i - 1] is same as 1, then: dem := 2 return dem
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A) { int dem = 1; sort(A.begin(), A.end()); for (int i = 1; i < A.size(); i++) if (A[i] - A[i - 1] == 1) dem = 2; return dem; } int main() { vector<int> A = { 2, 3, 4, 99, 100 }; cout << solve(A) << endl; }
입력
{ 2, 3, 4, 99, 100 }
출력
2