관리 메뉴

NineTwo meet you

[백준/자바] 2875 대회 or 인턴 본문

프로그래밍 문제/백준

[백준/자바] 2875 대회 or 인턴

NineTwo 2020. 12. 24. 17:42
반응형

출처


설명

n => 여학생 수

m => 남학생 수

k => 인턴쉽 참여해야 하는 수

 

반복문을 이용해 k 학생 중 여학생의 수를 i, 남학생의 수를 k-i로 해 각각 원래 학생 수에서 빼준 뒤 계산했다.

인턴쉽을 참여하지 않은 여학생 수 = n - i

인턴쉽을 참여하지 않은 남학생 수 = m - (k - i) = m - k + i

 

이때 팀( 2명의 여학생과 1명의 남학생 )의 최대 수를 구하기 위해서는 두 가지의 기준이 필요하다.

1. 남은 남학생의 수의 두 배보다 여학생이 많거나 같다면 남학생의 수만큼 팀을 만들 수 있다. 

ex) 5 1 1 => 답 1

2. 남은 여학생 수의 절반보다 남학생 수가 많거나 같다면 여학생의 수 절반만큼 팀을 만들 수 있다.

ex) 2 2 0 => 답 : 1

 

두 가지 경우 비슷한 말 같지만, 전혀 다른 이유는 1번의 경우 남학생이 모두 팀에 들어가지만

2번의 경우 팀이 되지 않는 남학생이 발생할 수도 있다는 차이가 있다.

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ2875 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str[] = br.readLine().split(" ");
int n = Integer.parseInt(str[0]);
int m = Integer.parseInt(str[1]);
int k = Integer.parseInt(str[2]);
int result = 0;
for(int i = 0; i <= k; i++) {
if(0 <= m-k+i && 0 <= n-i && 2*(m-k+i) <= n-i) {
result = Math.max(result, m-k+i);
}
if(0 <= m-k+i && 0 <= n-i && (n-i)/2 <= m-k+i) {
result = Math.max(result, (n-i)/2);
}
}
System.out.println(result);
}
}
view raw BOJ2875.java hosted with ❤ by GitHub
반응형
Comments