jyamethyst21 님의 블로그

백준 2875번- '대회 or 인턴' (PYTHON 풀이) 본문

CODING 💻

백준 2875번- '대회 or 인턴' (PYTHON 풀이)

jyamethyst21 2026. 1. 15. 09:41

문제:

 

2명의 여학생과 1명의 남학생이 짝을 지어 대회에 나가는데, 대회에 나가는 학생 중 K에 해당하는 인원은 인턴쉽 프로그램에 참여해야한다. 그래서 해당 수의 인원을 제외하고 봤을 때 이때 2:1로 짝을 지어 나갈 수 있는 최대 팀 수가 몇 개인지 출력하는 문제이다.

 

풀이:

N, M, K = map(int,input().split())
print(min( N // 2, M, (N + M - K) // 3 ))

여학생은 2명, 남학생은 1명이 필요하기 때문에 인턴을 고려하지 않았을 때 최대 팀 수는 min(N // 2, M) 이렇게 된다.

N // 2를 하는 이유는 여학생이 N명 있을 때 팀 하나당 2명씩 필요하기 때문에 몫을 구하기 위하여 이 계산식이 필요하다. 그리고 남학생은 그냥 1명이므로 M // 1 = M이 된다.

그래서 인턴쉽을 고려하지 않았을 경우는 min(N//2, M)이 되는데 문제에서는 인턴쉽을 고려해야하므로 추가 계산식이 필요하다.

인턴쉽을 고려할 경우 최대 만들 수 있는 팀 수는 팀 수를 T라 했을 때 최소 3T의 인원이 필요하고 이는 N+M-K보다 작거나 같아야 한다.

즉, 3T <= N+M-K이고 정리하면 T <= (N+M-K) // 3이 된다. 그래서 결과적으로 여학생의 수인 N // 2, 남학생의 수인 M, 인턴쉽을 고려한 학생수인 N+M-K//3 중 가장 적은 값이 답이 된다. 적은 값을 기준으로 보는 이유는 남학생이 10명이 있다하더라도 여학생이 2명이면 만들 수 있는 팀은 1팀이기 때문에 적은 수를 기준으로 보는 것이다.