[BOJ] 2875 - 대회 or 인턴


BOJ 2875 (대회 or 인턴)

간단한 그리디 문제다. 풀고보니 생각보다 코드가 짧게 나와서 좋았다..

접근한 방법

간단한 테스트 케이스를 제시해보겠다.

10 7 3
output : 4

직관적으로 생각했을 때, 여학생은 한팀에 2명 / 남학생은 한팀에 1명이기 때문에 최대한 여학생 숫자를 유지하면서 남학생을 인턴십에 보내는 쪽이 유리하다.

만약 (남학생 * 2) < 여학생 인 경우는 여학생을 인턴십에 보내는 쪽이 유리하다. 이 경우에 구성할 수 있는 팀 갯수는, 남학생이 몇명 있는가로 결정되므로..

위에 제시한 테스트 케이스의 경우, 남학생 3명을 인턴십에 보내면 여10/남4가 되고, 남은 남학생 숫자만큼 팀을 짤 수 있다. (4팀)

여학생 1명 / 남학생 2명 보내는 경우 여9/남5가 되고, 한 팀에는 여학생이 2명 있어야 하므로 9 / 2 = 4

여학생 2명 / 남학생 1명 보내는 경우 여8/남6이 되고, 8 / 2 = 4

여학생 3명을 보내는 경우 남은 여학생 수가 7명이 되기 때문에 7 / 2 = 3 (최적해 아니므로 틀림)

따라서 (남학생 * 2) > 여학생 인 경우 (남학생 * 2) == 여학생 이 될 때까지 남학생을 빼주고, 그렇지 않은 경우에는 여학생에서 한명 빼주면서 k를 빼주면 된다.

결과 계산은 삼항 연산자를 이용해서 간단하게 표현할 수 있다.

전체 코드