본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 2875번: 대회 or 인턴 -Python

728x90

[백준알고리즘] 2875번: 대회 or 인턴 -Python

https://www.acmicpc.net/problem/2875

 

2875번: 대회 or 인턴

문제 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.) 백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 그런데 올해에는 대회에 참여하려는 학생들 중 K명을 반드시 인턴쉽 프로그램에 참여하라는 학교의 방침이 생기게 되었다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다. 백준대학교에서는 뛰어난 인재들이 많기 때문

www.acmicpc.net

이번 문제는 간단하게 풀었다. 대회 팀의 수를 t라고 했을 때 대회에 참가하는 인원의 수는 2t + t = 3t 이다.

 

반대로 인턴에 참가해야하는 인원의 수는 N-2t + M-t >= K 를 만족해야 한다.

 

하지만 저 식을 그대로 이용하게 되면 틀린 문제가 된다. 위의 부등식을 풀어쓰면 t <= (N+M-K)/3 이 된다. 이 부등식은 주어진 입력이 3 0 0 일 때, 답은 대회에 참가할 남자 인원이 없어서 0이 되어야 하지만, 1을 출력하게 된다.

 

따라서 대회에 참가할 수 있는 최대 팀의 개수를 구한 뒤에 인턴에 참가하는 인원이 K명 이상이 될 때를 선택해주도록 했다.

1
2
3
4
5
6
7
8
9
10
import sys
 
n, m, k = map(int, sys.stdin.readline().split())
max_t = min(n//2, m)
ans = 0
for t in range(max_t, -1-1):
    if n - 2*+ m - t >= k:
        ans = t
        break
sys.stdout.write(str(ans))

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

 

728x90