본문 바로가기
백준/그리디

백준 2875. 대회 or 인턴

by 29살아저씨 2021. 8. 18.
반응형

🅰 백준 2875. 대회 or 인턴

 

2875번: 대회 or 인턴

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

www.acmicpc.net

✏️ 문제 풀이

  • 대회에 나갈 수 있는 팀을 구하는 문제이다. 팀원은 여자2 + 남자 1 = 한팀으로 구성된다.
  • 먼저 인원중에 대회에 나갈 수 있는 팀을 구한 뒤 남은사람들과 K를 비교하여 남은 사람이 더 크면 팀을 출력하고, K가 더 크면 팀을 해체해서 인원을 채워야 하기 때문에 (K-남은인원)/3을 해줘서 그 값을 올림을 해줘서 계산을 했다.

✏️ 소스코드

package greedy;

import java.util.*;
/*
 * 대회에 나갈 수 있는 팀을 구하는 문제 여2 남1 = 한팀
 * 먼저 인원 중에 대회 나갈 수 있는 팀을 구한 뒤
 * 남은 사람들과 K를 비교하여 남은 사람이 더 크면 팀을 출력하고
 * K가 더 크면 K/3을 해서 올림을 하여 해체되어야 하는 팀의 개수를 구하여 출력
 * */

public class Main_브론즈3_2875_손은성 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();
		int K = sc.nextInt();
		int team = 0;
		int leftNum = 0;    // 남은 인원 수

//		M의 수 만큼 반복하여 팀을 꾸림
		for (int i = 1, end = M + 1; i < end; i++) {
//			여자의 수가 없으면 종료
			if (N <= 1)
				break;
			M -= 1;
			N -= 2;
			team++;
		}
		
		leftNum = N + M;
		
//		남은 인원과 K비교
		if (leftNum >= K) {
			System.out.println(team);
		} else {
			double a = (K - leftNum) / 3.0;
			a = Math.ceil(a);  //0.xx : 1팀, 1.xx : 2팀이 나오기 때문에 올림해서 구함
			team -= a;
			System.out.println(team);
		}
	}
}

 

✅ 후기

  • 브론즈3 문제이지만 접근을 어떻게 하느냐에 따라서 문제를 푸는 방식이 달라지는것을 알았다. 
  • 처음에는 K를 먼저 채우려고 했으나, 답이 안나와서 팀원을 먼저 뽑는 방식으로 하니 쉽게 답이 나왔다.
  • 문제를 풀기전에 다양하게 생각하고 최적의 조건을 기준으로 푸는 법을 연습해야겠다 느꼈다.
반응형

'백준 > 그리디' 카테고리의 다른 글

백준 1080. 행렬  (0) 2021.08.18
백준 1783. 병든 나이트  (0) 2021.08.18
백준 1744. 수 묶기  (0) 2021.08.17
백준 1541. 잃어버린 괄호  (0) 2021.08.17
백준 11399. ATM  (0) 2021.08.17

댓글