반응형
출처: SWEA
Input
3
6 3 2
2 1 1
6 10 3
Output
#1 2
#2 0
#3 3
팀을 구성하기 위해서는 여자 인원수에 2배에 해당하는 남자인원 수가 필요합니다.
그렇기에 남자 10명 / 여자 2명일 때, 남자 6명은 인턴 여부를 떠나 팀을 구성하지 못합니다.
반대로 남자 2명 / 여자 10명일 때, 여자 9명은 인턴 여부를 떠나 팀을 구성하지 못합니다.
팀을 구성하지 못하는 인원에 대한 인턴 인원을 처리한 후,
팀을 구성할 수 있는 최대 경우의 수를 구합니다.
#include <iostream>
using namespace std;
int men, women, K, target;
int main() {
int testCase; cin >> testCase;
for (int tc = 1; tc <= testCase; ++tc) {
cin >> men >> women >> K;
// 인턴이 모두 배정될 때까지
while (K > 0) {
// 남자는 여자를 기준으로 인원이 2배 이상.
// 남자 인원이 여자인원의 2배보다 많은 경우
if (men > women * 2) {
// ex) 남자 = 5, 여자 = 2인 경우
// 남자(5) - 여자(2) * 2 = 남자 1명은 팀을 구성하지 못하므로 인턴을 보내도 무방
target = men - (women * 2);
K -= target;
men -= target;
}
// 여자 인원의 2배가 남자보다 많은 경우
// ex) 여자 = 10, 남자 = 6인 경우
// 여자(10) - 남자(6) / 2 = 여자 7명은 팀을 구성하지 못하므로 인턴을 보내도 무방
else if (men < women * 2) {
target = women - (men / 2);
K -= target;
women -= target;
}
// 여자 인원 * 2 = 남자 인원
else {
K--; women--;
}
}
// 인턴 배정이 끝났으므로, 남은 인원수로 최대 팀을 구성
// 여자인원을 기준으로 팀을 구성할 수 있는 확인
int answer = 0;
while (answer <= women) {
// 팀을 구성하지 못하는 경우
if (men < answer * 2) break;
answer++;
}
cout << "#" << tc << " ";
cout << answer - 1;
cout << endl;
}
}
반응형
'PS 문제 풀이 > SWEA' 카테고리의 다른 글
[SWEA] 3314 보충학습과 평균 (0) | 2021.03.01 |
---|---|
[SWEA] 3142 영준이와 신비한 뿔의 숲 (0) | 2021.03.01 |
[SWEA] 1284 수도 요금 경쟁 (0) | 2021.03.01 |
[SWEA] 1234 비밀번호 (0) | 2021.03.01 |
[SWEA] 3376 파도반 수열 (0) | 2021.03.01 |
댓글