알고리즘/백준

BOJ) 대회 or 인턴

Zin0_0 2020. 7. 18. 22:01
반응형

대회 or 인턴

 

2875번: 대회 or 인턴

문제 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.) 백준대학교는 뛰어난 인재들이 많아

www.acmicpc.net

풀이

 

1. 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙
2.  대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다.

 

위의 두 조건에 따라, 여학생과 남학생, 인턴에 참여하는 학생의 수가 순서대로 주어질 때, 인턴쉽에 참가할 수 있는 최대 팀의 수를 구하는 문제다.

 

여학생 2명과 남학생 한명을 짝지어야 하기 때문에, 반복문을 통해 인턴십에 참여할 학생을 여학생과 남학생 중 어디서 골라야하는지 결정해줬다.

 

입력받은 여학생의 수의 절반이 대회에 나갈 수 있기 때문에, 여학생 / 2 와 남학생 수를 비교하면서 while을 종료했다.

이후, 여학생 / 2 와 남학생의 숫자 둘 중 더 작은 숫자를 출력해줬다.

-> 여학생 2명과 남학생 1명이 한 팀이기 때문에

 

코드

 

 

코드

 

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());
        br.close();

        int female = Integer.parseInt(st.nextToken());
        int male = Integer.parseInt(st.nextToken());
        int intern = Integer.parseInt(st.nextToken());

        solution(female, male, intern);
    }

    private static void solution(int female, int male, int intern) {
        final int DIV = 2;
        while(intern !=0) {
            if(female/DIV < male) { male--; }
            else { female--; }
            intern--;
        }
        System.out.println(Math.min(female/DIV, male));
    }
}
반응형