반응형
🅰 백준 2875. 대회 or 인턴
✏️ 문제 풀이
- 대회에 나갈 수 있는 팀을 구하는 문제이다. 팀원은 여자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 |
댓글