B2875

개요

백준 문제 2875번을 풀면서 어려웠던 점과 코드를 정리한다.
소요 시간 : 90분
https://www.acmicpc.net/problem/2875

문제

백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.)

백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다.

백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다.

여러분은 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야하는 인원 K가 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
using namespace std;

int man,woman,objIntern;
int minTeam = 0;


void greedy()
{
int intern = 0;
while(objIntern != intern)
{
//여자 한명 빼도 팀 충족
if((woman-1)/2 >= minTeam)
{
woman--;
intern++;
}
//남자 한명 빼도 팀 충족
else if(man > minTeam)
{
man--;
intern++;
}
else if(woman/2 > man)
{
//여자뺀다
woman--;
intern++;
minTeam--;
}
else
{
man--;
intern++;
minTeam--;
}
}

cout << minTeam;



}


void solve()
{
cin >> woman >> man >> objIntern;
minTeam = min(man,woman/2);
greedy();

}

int main()
{
solve();


}

풀이

  1. 팀이 충족하는 한 남자나 여자를 빼는 것이 제일 큰 우선순위
  2. 팀이 충족하지 않는 경우에는 둘 중에 뺄 사람을 골라야함 -> 최대한 팀이 깨지지 않게 (woman/2 > man)

배울 점, 메모

Author

Praisebak

Posted on

2021-05-11

Updated on

2021-05-12

Licensed under

Comments