Programming/Algorithm
[Java] 백준 2875 대회 or 인턴
Yejii
2021. 3. 10. 20:48
문제
대회에 나갈 수 있는 1 팀은 여자2 남자1로 구성되어 있다.
여자는 총 m명 남자는 총 n명이 있다고 할 때 m+n명중 k명은 반드시 인턴에 참여해야한다.
인턴에 참여한 인원은 대회에 참가할 수 없다고 할 때, 만들 수 있는 최대 팀수를 구하는 문제이다.
풀이
- 먼저 만들 수 있는 팀 수의 최댓값(teams)을 구한다.
- 만들 수 있는 팀의 개수는 '총 여자 수/2(1팀에 최소로 들어가야하는 여자 수)'와 총 남자 수/1(1팀에 최소로 들어가야 하는 남자 수)' 중 더 작은 값이다.
- int teams = Math.min(M/2, N/1)
- 총 인원에서 팀에 속한 사람들 (teams * 3)을 뺀 나머지 인원을 구한다.
- 이 인원이 K보다 크거나 같아야 K명 이상이 인턴에 참여가능한 것이다.
- 해당 조건을 만족하는 가장 큰 teams값을 구해서 출력한다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int M = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int teams = Math.min(M / 2, N);
while(true){
if (M + N - 3 * teams >= K)
break;
teams -= 1;
}
System.out.println(teams);
}
}