Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 2875번- '대회 or 인턴' (PYTHON 풀이) 본문
문제:

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팀이기 때문에 적은 수를 기준으로 보는 것이다.
'CODING 💻' 카테고리의 다른 글
| 백준 10156번- '과자' (PYTHON 풀이) (0) | 2026.01.17 |
|---|---|
| 백준 10820번- '문자열 분석' (PYTHON 풀이) (0) | 2026.01.16 |
| 백준 10768번- '특별한 날' (PYTHON 풀이) (0) | 2026.01.14 |
| 백준 2476번- '주사위 게임' (PYTHON 풀이) (0) | 2026.01.13 |
| 백준 5596번- '소음' (PYTHON 풀이) (0) | 2026.01.12 |
