본문 바로가기
PS 문제 풀이/SWEA

[SWEA] 3066 팀 정하기

by 까망 하르방 2021. 3. 1.
반응형

출처: 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

댓글