알고리즘/백준

[파이썬, 자바] BOJ_2875(대회 or 인턴)

딱따구르리 2021. 1. 19. 17:18
728x90
반응형

문제

 

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

 

2875번: 대회 or 인턴

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

www.acmicpc.net


해설

 

인턴에 참여해야 하는 수인 k만큼 반복문을 돌면서, 

n을 2로 나눈 몫과 m을 비교하여 둘 중 더 수가 큰 곳에서 한 명을 빼주면 된다.

여학생은 2명, 남학생은 1명이 있어야 팀을 구성할 수 있기 때문에 더 큰 곳에서 한 명씩 빼줘야 균형을 맞출 수 있다.

 

그러고 나선, n을 2로 나눈 몫과 m중에 더 작은 값이 그대로 팀의 수가 되기 때문에 출력해주면 된다.


코드

 

- 파이썬

#백준 2875(대회 or 인턴)

n, m, k = map(int, input().split())  #여학생, 남학생, 인턴쉽 참가 인원

for _ in range(k):
    if n // 2 >= m:
        n -= 1
    else:
        m -= 1

print(min(n // 2, m))

 

- 자바

//백준 2875(대회 or 인턴)
import java.util.*;
import java.io.*;

public class Boj_2875 {

	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.parseInt(st.nextToken());  //여학생
		int m = Integer.parseInt(st.nextToken());  //남학생
		int k = Integer.parseInt(st.nextToken());  //인턴쉽
		
		while(k > 0) {
			if(n / 2 >= m) {
				n--;
				k--;
			}
			else {
				m--;
				k--;
			}
		}
		
		System.out.println(Math.min(n / 2, m));
	}

}
728x90
반응형