본문 바로가기
알고리즘 풀기

[백준] 2875 대회or인턴 python3

by 쏘야.yap 2020. 2. 29.
728x90

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

2875번: 대회 or 인턴

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

www.acmicpc.net

 

굉장히 간단한 문제인데 어렵게 꼬아서 생각해서 오래 걸렸던 문제다.

크게 두 가지 방법이 있다곤 하는데, 영 이해가 안돼서 그냥 간단하게 풀었다.

 

python3 코드

N, M, K = map(int, input().split(" "))

team = 0
while N >= 2 and M >= 1 and N+M >= K+3:
    N -= 2
    M -= 1
    team += 1

print(team)

 

풀이

그리디 알고리즘을 활용하여, 조건에 맞춰서 팀을 만든다. 라는 문제를 반복 해결하였다.

 

while 반복문을 계속 돌면서, 팀을 하나씩 만들어준다.

팀의 구성원은 2여1남이므로, 매 루프마다 N-2, M-1을 해준다.

팀을 만들기 위해서는 

  1. 여학생이 2명 이상일 것 (N >= 2)
  2. 남학생이 1명 이상일 것 (M >= 1)
  3. 팀을 만들어 총 인원이 -3이 된 후에도 인턴쉽에 참가 할 K명의 학생이 남아있을 것 (N+M-3 >= K)

의 조건이 필요하므로, 위의 조건을 while문의 조건으로 준다.

'알고리즘 풀기' 카테고리의 다른 글

[백준] 1967 트리의 지름 python3  (0) 2020.03.10
[백준] 14501 퇴사 python3  (0) 2020.03.08
[백준] 1414 불우이웃돕기 python3  (0) 2020.02.29
코테) 기능개발  (0) 2019.12.18