메이쁘

(JAVA) 백준 2875번 : 대회 or 인턴 본문

Algorithm/Baekjoon

(JAVA) 백준 2875번 : 대회 or 인턴

메이쁘 2020. 4. 4. 13:32

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

 

2875번: 대회 or 인턴

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

www.acmicpc.net

 

직관적으로 보는 문제.

 

쉽다.

 

 

여러 방식은 있겠지만 내가 사용한 방식은

 

k = 3이라고 하면

(여학생 인턴 수, 남학생 인턴 수) = (3, 0), (2, 1), (1, 2), (0, 3) 의 경우가 있다.

 

이에 맞게 학생 수를 뺀 다음

 

여학생 남은 수 / 2남학생 수 비교해서

더 작은 값을 최대로 하는 수를 찾아냈다.

 

 

 

끄ㅡ읏

 

 

감사합니다.

 

소스코드


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

// 대회 or 인턴
// 그리디 알고리즘 
public class p2875 {
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int n = Integer.valueOf(st.nextToken());
		int m = Integer.valueOf(st.nextToken());
		int k = Integer.valueOf(st.nextToken());
		
		int max = 0;
		// i : 남학생에서 인턴 보낼 수
		for(int i = 0; i <= k; i++) {
			int j = k - i;	// 여학생에서 인턴보낼 수
			int nowN = n - j;
			int nowM = m - i;
			if(nowN < 0 || nowM < 0) {
				continue;
			}
			
			if(nowN / 2 >= nowM) {
				max = Math.max(max, nowM);
			}
			else {
				max = Math.max(max, nowN / 2);
			}
		}
		System.out.println(max);
	}
}

 

 

 

 

Comments