BOJ 2875번
현재 학교에는 여학생이 N명, 남학생이 M명이 있다.
대회에는 여학생 1명과 남학생 2명이 팀을 이뤄 나아갸 한다는 조건이 있다.
하지만 학생들 중 K명의 학생은 인턴쉽에 참가해야만 하고, 이때 대회에 출전하는 최대 팀 수를 출력해야 한다.
풀이 알고리즘 : 그리디, 구현?
남학생은 2명씩 팀에 포함되기 때문에, 남학생 수가 홀수인 경우 한명이 무조건 남을것이라 생각했다.
그래서 남학생 수가 홀수인 경우는 남는 1명을 먼저 인턴쉽 인원에 포함하였다.
이후 남학생 두명으로 만들 수 있는 팀 (mteam)과 여학생 한명으로 만들 수 있는 팀 (wteam)의 수를 비교하여,
더 많은 개수의 팀을 더 적은 개수의 팀으로 맞춰주면서 k를 줄여주었다.
M, N, K 가 굉장히 작은 수여서, 시간제한에는 걸리지 않았다.
소스코드 보기
더보기
/*
BOJ 2875 (https://www.acmicpc.net/problem/2875)
*/
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int main(void) {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int n, m, k; // 여학생의 수, 남학생의 수, 인턴쉽 참여 인원 수
cin >> n >> m >> k;
while(k) {
if(n % 2 != 0) { // 남학생이 홀수면 짝수로 맞춤
n--;
} else {
int mteam = n / 2;
int wteam = m;
// 더 인원이 많은 팀을 적은 팀으로 맞춤
if(mteam < wteam) {
m--;
} else if(1 < k) {
n -= 2;
k--;
} else {
n--;
}
}
k--;
}
cout << min(n / 2, m) << "\n";
}
'백준_BOJ > BOJ (브론즈)' 카테고리의 다른 글
[백준/알고리즘] 19532번 수학은 비대면강의입니다 (브론즈 3) (0) | 2020.08.02 |
---|---|
[백준/알고리즘] 6679번 싱기한 네자리 숫자 (브론즈 2) (0) | 2020.06.13 |