이 문제에서 두 개의 정수 N과 M이 주어지고 N은 그룹 1의 사람들 수이고 M은 그룹 2의 사람들 수입니다. 우리의 임무는 다음을 생성하는 것입니다. 두 그룹으로 구성된 최대 3인 팀 수를 찾는 프로그램
최대한 많은 팀을 구성할 수 있도록 이 그룹에서 1명을 선택하여 3명으로 구성된 팀을 만듭니다. 각 팀에는 각 그룹에서 최소 한 명이 있어야 합니다.
문제를 이해하기 위해 예를 들어 보겠습니다.
입력 - N =5, M =3
출력 - 2
설명 -
팀은 다음과 같습니다 -
Team 1: Group 1 Member->2 ; Group 2 Member->1 Left in Group 1 = 3 ; left in Group 2 = 2 Team 2: Group 1 Member->2 ; Group 2 Member->1 Left in Group 1 = 1 ; left in Group 2 = 1 No more teams of 3 can be formed.
이 문제를 해결하기 위해 우리는 1명의 구성원이 더 적은 인원으로 구성된 그룹과 2명의 다른 그룹에서 팀을 구성하는 팀을 만들 것입니다. 그리고 각 그룹의 사람 수를 업데이트합니다. 또한 팀 수를 유지하고 각 팀 생성 후 증가할 것입니다. 팀 생성이 가능할 때까지
예시
두 그룹으로 구성된 최대 3인 팀 수를 찾는 프로그램 -
#include <iostream> using namespace std; int CountTeams(int N, int M) { int teamCount = 0; while (N >= 1 && M >= 1 && N + M >= 3) { if (N > M) { N = N-2; M = M-1; } else { N = N-1; M = M-2; } teamCount++; } return teamCount; } int main() { int N = 5, M = 3; cout<<"The maximum number of 3-person teams is "<<CountTeams(N, M); return 0; }
출력
The maximum number of 3-person teams is 2