https://www.acmicpc.net/problem/2875
<C++>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, m, k;
cin >> n >> m >> k;
int cnt = 1;
int limit = n + m - k;
while (true)
{
//조건1,2,3 중 하나라도 만족하지 않았을땐 break로 탈출!
if ((cnt * 2 > n) || (cnt > m) || (cnt * 3 > limit))
break;
cnt++;
}
cout << --cnt << endl;
}
> 1개의 팀을 만드는 데 필요한 여학생의 수 는 2명, 남학생의 수는 1명,
그렇다면 x개의 팀을 만드는 데 필요한 여학생의 수는 2*x명, 남학생의 수는 x명 (위 코드에서는 x를 cnt로 적었습니다.)
> 조건 1 ) x개의 팀을 만드는 데 필요한 여학생의 수인 2*x는 여학생 전체의 수인 n보다 작거나 같아야 한다.
> 조건 2 ) x개의 팀을 만드는 데 필요한 남학생의 수인 x는 남학생 전체의 수인 m보다 작거나 같아야 한다.
> 조건 3 ) x개의 팀을 만드는 데 필요한 학생의 수인 2*x + x는 전체의 학생에서 인턴쉽 프로그램에 참가하러 가는 학생을 뺀 수(n+m-k, 여기서는 limit이라 표현) 보다 작거나 같아야 한다.
> 조건 1,2,3을 모두 만족하는 경우에는 x를 1만큼 증가시킨다(위 코드에서는 cnt를 증가)
> 조건 1,2,3 중 하나라도 만족하지 않는 경우에는 탈출합니다.
> cnt의 초기값이 1이므로 출력할 때는 cnt에서 1을 뺀 것을 출력합니다.
'Problem Solving > 백준' 카테고리의 다른 글
[백준] 1977번 : 완전제곱수 (0) | 2020.06.26 |
---|---|
[백준] 2579번 : 계단 오르기 (0) | 2020.06.24 |
[백준] 2667번 : 단지 번호 붙이기 (0) | 2020.06.21 |
[백준] 1654번 : 랜선 자르기 (0) | 2020.06.19 |
[백준] 2512번 : 예산 (0) | 2020.06.17 |