코딩뚠뚠

[백준문제풀이] 2875 대회 or 인턴 본문

알고리즘 문제풀이/백준문제풀이

[백준문제풀이] 2875 대회 or 인턴

로디네로 2021. 1. 1. 16:02
반응형

 

풀이일시 : 2020-10-16

 

문제 :

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

백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다.

백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다.

여러분은 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야하는 인원 K가 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다.

입력 :

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

ex)

6 3 2

출력 :

만들 수 있는 팀의 최대 개수을 출력하면 된다.

ex)

2

풀이 :

N과 M을 팀으로 소진시켜주고 (N-2 M-1 team+1)

인턴십에 참여해야하는 K를 어떠한 방법으로 소진시키는 지에 따라 조건을 나누어 실행시켜준다.

 

#include <iostream>
#include <cmath>

using namespace std;

int main() {
	int N, M, K;
	cin >> N >> M >> K;
	int team=0;
	float result;
	do{
		N= N - 2;
		M= M - 1;
		team++;
	} while (N > 1 && M > 0);
	
	//K를 소진시킨다. (남녀비율은 상관없는 K) 
	//K가 적고 남은 M이나 N들이 많다면?
	K = K - (M + N); // M+N = 팀을 다 꾸리고 남은인원들
    //남은 M N으로 소진을 시키고도 K가 남는다면? 팀을 해체시키고 인원을 갉아먹기
	if (K > 0) { 
		result = float(K) / 3.0;
		team = team - ceil(result); // 11명이면 4팀이 망가짐 올림연산
	}
	cout << team << endl;
}

 

추가자료 : 

dbstndi6316.tistory.com/32

 

[개념정리] C++ 수식함수들

C++ standard header는 뒤에 .h 형태의 확장자가 붙지않게끔 명명되어있는데 기존 C standard header 들이 C++로 넘어오면서 .h가 떼지고 앞에 c가 붙게되었다. 따라서 cmath 도 math.h에서 넘어오게 된 것인데

dbstndi6316.tistory.com

 

반응형