알고리즘/그리디

[Python] 백준 2875: 대회 or 인턴

아뵹젼 2021. 9. 8.
n, m, k = map(int, input().split())
team = 0
while(n >= 2 and m >= 1 and n+m-3 >= k) :
    n -= 2
    m -= 1
    team += 1
print(team)

 

먼저 k 인턴에 대한 조건이 없다고 가정하고 문제를 풀었다.

n 이 2, m 이 1 일 때 한 팀이 구성되므로

while (n >= 2 and m >= 1) 이 성립할 때마다 한 팀이 추가 되는 것이다.

 

다음으로 k 인턴에 대한 조건을 추가했다.

저 조건 뒤에 n + m - 3 >= k 을 더해주면 된다

왜냐면 n + m 즉, 남은 학생 수에다가 3명 (n-2명, m-1명으로 구성된 한 팀) 을 제외한 숫자가 k 이상일 때 인턴을 나갈 수 있기 때문이다.

댓글