ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by black7375.