-
[Java] 백준 2875 대회 or 인턴Programming/Algorithm 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); } }
'Programming > Algorithm' 카테고리의 다른 글
[Java] 백준 10610 30 (0) 2021.03.15 [Java] 백준 9095 1,2,3 더하기 (0) 2021.03.13 [Java] 백준 11047 동전 0 (0) 2021.03.10 [Java] 백준 2579 계단 오르기 (0) 2021.03.10 [Java] 백준 1463 1로 만들기 (0) 2021.03.09 댓글