백준 2875 : 대회 or 인턴
문제 링크
문제 내용
백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.)
백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다.
백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다.
여러분은 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야 하는 인원 K가 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다.
Idea
- 우선 N과 M으로만 따졌을 때, 최대로 만들 수 있는 팀 수를 구한다.
- 팀을 만들고 남은 사람들은 K에 빼준다.
- 만약, K가 0보다 작거나 같다면 최대팀을 만들고 남은 사람들로도 인턴쉽에 참여할 수 있다는 뜻
- 만약, K가 0보다 크다면 인턴쉽에 갈 인원이 부족하다는 뜻이므로 K를 3명(여자2+남자1)단위로 나눈 몫을 최대 팀 수에서 빼준다.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <stdio.h>
int main() {
int N, M, K;
scanf("%d %d %d", &N, &M, &K);
//최대 몫 구하기
int max = N / 2 < M ? N / 2 : M;
//전체에서 최대값을 제외한 나머지 값을
//K에 빼준다.
K -= N + M - 3 * max;
//K가 0보다 크다면
//3으로 나눈 몫만큼 max에서 빼준다.
if (K > 0) {
K--;
max -= K / 3 + 1;
}
printf("%d\n", max);
return 0;
}
|
cs |
'백준 Baekjoon' 카테고리의 다른 글
[C언어] 백준 14881 : 물통 문제 (0) | 2020.11.04 |
---|---|
[C언어] 백준 2447 : 별 찍기 - 10 (0) | 2020.11.02 |
[C언어] 백준 1874 : 스택 수열 (0) | 2020.10.18 |
[C언어] 백준 2749 : 피보나치 수 3 (0) | 2020.10.10 |
[C언어] 백준 9471 : 피사노 주기 (0) | 2020.10.09 |