본문 바로가기
Problem Solving/백준

[백준] 2875번 : 대회 or 인턴

by shinbian11 2020. 6. 23.

https://www.acmicpc.net/problem/2875

 

2875번: 대회 or 인턴

문제 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.) 백준대학교는 뛰어난 인재들이 많아

www.acmicpc.net


<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