https://www.acmicpc.net/problem/2875
-- 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다.
-- 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다.
-- 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다.
-- 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야하는 인원 K가 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다.
사실 K만 없었다면 단순히 1. 여학생을 2명씩 짝지을 수 있는 경우의 수 구하기 -> 2. 경우의 수 만큼 남학생 수를 나누기 과정을 통해서 쉽게 구할 수 있었을거 같다,,
그래서 생각해낸 접근방법
1. N - 2 + M - 1 >= K 일 경우, K 성립 가능, 아닐 경우 0 출력
2. N - 2, M - 1을 했을 때 1을 카운트 하는 것을
3. (N - 2) + (M - 1)의 값이 K과 같거나 작아지기 전(클 때) 까지 계속 반복
N, M, K = map(int, input().split())
if N < 2 or M < 1:
print(0)
if N + M <= K:
print(0)
max_team = 0
while (N - 2) + (M -1) >= K:
if N >= 2 and M >= 1:
N -= 2
M -= 1
max_team += 1
else:
break
print(max_team)
while과 if를 합쳐서 구현하는건 처음이었음,
1. if에서 else를 통해 break 할 수 있다는 사용법을 알아냈고
2. 처음 생각해낸 조합 문제로 굳이 해결할 필요가 없다는 것을 알아냄