백준 풀이
[백준 풀이_Java] 2875 대회 or 인턴
happyhelen
2021. 10. 28. 16:12
처음 생각
간단해 보이는데 의외로 생각을 많이하게 하는 문제였다
처음에는 여자, 남자, 인턴십 인원 따로따로 생각했는데
결국 몇 팀이 나갈지를 물어보는 거니까 남자가 몇명남고 여자가 몇명 남든 인원수만 맞으면 된다는 생각이 들었다
여자 몇명, 남자 몇명이 인턴십 인원을 채울지 계산하지 않고, 결국 3명으로 이루어진 몇 팀이 남는가가 핵심이다
자세한건 코드를 보면서 설명하겠다
내가 푼 방법
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int W = sc.nextInt();
int M = sc.nextInt();
int K = sc.nextInt();
int n = W/2; // 여자 2명씩 그룹지은 수
int max = Math.min(M, n); // n과 M 중 적은 수가 최대 참가 팀수
int leftover = W+M-(3*max); // W+M-(3*max) =총인원-참가인원 = 필요없는 사람들
int shortage = K-leftover; // K를 leftover 로 채우고도 부족한 사람수
if(shortage > 0) { // K를 leftover 로 채우고도 부족하면
if((shortage)%3 ==0) { // %3==0이면 그만큼 해체
System.out.println(max - ((shortage)/3));
}else { // 그렇지 않으면 거기서 한팀 더 해체
System.out.println(max - ((shortage)/3) -1);
}
}
if(shortage <= 0) { // K 가 leftover로 다 충족되면
System.out.println(max);
}
}
}