백준 2875
원칙 : 대회에 나가기 위해서는 2명의 여학생과 1명의 남학생이 팀을 결성하는 것 N : 여학생의 수, M : 남학생의 수,
그런데 대회에 참여 학생들 중 K명의 학생들은 반드시 인턴십 프로그램에 참여해야함. 인턴십에 참여하는 학생들은 대회에 참여하지 못함
N,M,K가 주어질 때, 만들 수 있는 최대의 팀 수를 구한다.
예시를 보자.
6,3,2가 주어졌다.
(6,3)에서 여학생 2명, 남학생 한명 제외시키면 (4,2) 다시 여학생 2명 남학생 한명 제외시키면 (2,1)이다.
2명이 무조건 인턴십에 가야하므로 최대 2팀 밖에 만들지 못한다.
따라서 최대 2개의 팀 결성 가능.
아이디어
- 여학생 수와 남학생 수를 입력 받고
- 여학생 수가 2이상인지, 남학생 수가 1이상인지 그리고 전체 수가 인턴십을 가야하는 인원수를 고려한 수 만큼이 더 큰지 확인한다
- 확인해서 가능하다면 팀원 수를 늘려주고 갯수를 빼준다.
- 이후 반복하면서 체크
Q) 그런데 값을 갱신해줄 떄, 인턴십을 누가가야하는지 어떻게 알지? -> 마지막에 결정하니 알 필요 없어
코드
import sys
N, M, K = map(int, sys.stdin.readline().split())
sum = N+M
total = 0
while(True):
if(N >= 2 and M >= 1 and sum >= K+3):
total += 1
N -= 2
M -= 1
sum = N+M
else:
break
print(total)
알게된 사실
참고자료
[파이썬 줄바꿈 없이 출력]http://mwultong.blogspot.com/2007/01/python-print-no-newline-print.html [코드 참조]https://lmcoa15.tistory.com/48