문제
백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.)
백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다.
백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다.
여러분은 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야하는 인원 K가 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다.
입력
첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N),
출력
만들 수 있는 팀의 최대 개수을 출력하면 된다.
예제 입력과 출력
알고리즘 분류
그리디 알고리즘
정답
n,m,k=input().split(' ')
n=int(n)
m=int(m)
k=int(k)
nn= n // 2
a= n % 2
c=0
b=0
if nn > m:
c=m
b=(nn-m)*2+a
elif nn == m:
c=nn
b=a
elif nn < m:
c=nn
b=m-nn+a
while True:
if b >= k:
break
else:
b=b+3
c=c-1
print(c)
여학생은 2명이 필요하니까 몫을 nn에 저장하고 나머지는 a에 저장합니다.
c는 만들수 있는 팀의 수를 세기 위한 변수입니다.
b는 나머지로 k랑 비교하기 위한 변수입니다.
if : nn이 m보다 크면 nn-m하고 *2를 해줍니다.
처음 여학생은 ÷2를 해줬으니 다시 곱해주어야 하기 때문입니다.
그 후 나머지 a를 더해줍니다.
elif : nn과 m이 같으면 c=nn이나 c=m입니다.
elif : nn이 m보다 작으면 m-nn 하고 a를 더해줍니다.
while문 무한루프를 통해 k가 충족되었는지 확인합니다.
b>=k이면 무한루프를 나가 c 출력합니다.
b<k이면 b에 3 더하고 (2명의 여학생, 1명의 남학생) c에서 1 을 빼줍니다. (한 팀을 없애고 인턴쉽 학생으로 추가!)
백준 알고리즘 2875번 : https://www.acmicpc.net/problem/2875
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
백준알고리즘 - 1049번 기타줄 - 파이썬(Python) (0) | 2020.04.19 |
---|---|
백준알고리즘 - 1541번 잃어버린 괄호 - 파이썬(Python) (0) | 2020.04.18 |
백준알고리즘 - 10610번 30 - 파이썬(Python) (0) | 2020.04.18 |
백준알고리즘 - 2217번 로프 - 파이썬(Python) (0) | 2020.04.17 |
백준알고리즘 - 5585번 거스름돈 - 파이썬(Python) (0) | 2020.04.17 |