본문 바로가기
Problem Solving/BOJ

[백준] 2875번 - 대회 or 인턴

by 테리는당근을좋아해 2020. 1. 12.

문제 >

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

백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다.

그런데 올해에는 대회에 참여하려는 학생들 중 K명을 반드시 인턴쉽 프로그램에 참여하라는 학교의 방침이 생기게 되었다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다.

백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다.

여러분은 N명의 여학생과 M명의 남학생, K명의 인턴쉽에 참여해야하는 인원이 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다.

 

입력 >

첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100), (0 ≤ N ≤ 100), (0 ≤ K ≤ M+N),

 

출력 >

만들 수 있는 팀의 최댓값을 출력하면 된다.

 

해결방법 > 

그리디 알고리즘으로 문제해결

 

대회에 참가하는 팀을 이루기 위해서는 다음 두 조건을 만족해야한다. 여학생 수(a), 남학생 수(b), 인턴 참가학생 수(c), 대회참가 팀 수(i)가  있을 때

 

1) 대회에 참가하는 팀의 수는 여학생 수의 절반을 넘지 못한다. (a >= 2i)

2) 총 학생 수는 중 대회에 참가하는 팀원을 제외한 인원이 인턴에 참가하는 인원 수보다 크거나 같아야한다. ((a+b) - 3i >= c)

 

대회에 참가하는 팀의 최대값은 남학생의 수와 같으므로 가장 큰 값부터 조건을 만족하는 지 탐색해나간다.

 

[JAVA]

package baekjoon;

import java.util.*;

public class BOJ_2875{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int b = sc.nextInt();
		int c = sc.nextInt();
		int i;
		
		for(i = b; i >= 0; i--) {
			if((2 * i) <= a && ((a + b) - 3 * i) >= c)
				break;
		}
		System.out.println(i);
	}
}

 

문제링크 >

https://www.acmicpc.net/problem/2875

 

2875번: 대회 or 인턴

문제 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.) 백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 그런데 올해에는 대회에 참여하려는 학생들 중 K명을 반드시 인턴쉽 프로그램에 참여하라는 학교의 방침이 생기게 되었다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다. 백준대학교에서는 뛰어난 인재들이 많기 때문

www.acmicpc.net

 

'Problem Solving > BOJ' 카테고리의 다른 글

[백준] 10610번 - 30  (0) 2020.01.13
[백준] 2583번 - 영역 구하기  (0) 2020.01.13
[백준] 10026번 - 적록색약  (0) 2020.01.11
[백준] 2468번 - 안전 영역  (0) 2020.01.11
[백준] 2217번 - 로프  (0) 2020.01.11

댓글