250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 이분탐색
- 분할 정복
- 백준
- 재귀
- anomaly detection
- Representation Learning
- self supervised learning
- c++
- SSL
- 논문리뷰
- 정렬
- Multi-Scale Patch
- 문자열
- paper review
- 구현
- 분할정복
- BOJ
- 수학
Archives
- Today
- Total
갓생살기프로젝트
[백준/BOJ/C++] 2875번 대회 or 인턴 - Greedy 본문
728x90
1. 문제
백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.)
백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다.
백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다.
여러분은 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야하는 인원 K가 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다.
2. 입력
첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N),
3. 출력
만들 수 있는 팀의 최대 개수을 출력하면 된다.
4. 풀이
먼저 한 팀이 여학생 2명, 남학생 1명으로 구성되기 때문에 특정 조건을 만족할때까지 입력된 여학생,남학생 수에서 각각 2명, 1명씩을 빼면서 팀을 만들어준다. 팀 카운트를 1씩 올려준다.
여기서 조건은 K명의 인원이 인턴쉽에 참여해야하기 때문에 팀은 만들고 남은 학생이 K보다 많아야 한다.
while문으로 표현을 하면 N + M >= K + 3 일 때까지인데, 여기서 3을 더해주는것은 while문을 한번 돌때 각각 2명, 1명이 빠져서 총 3명이 팀으로 빠지기 때문이다. 이 식을 다르게 표현하면 N + M - 3 >= K 로 표현할 수 있겠다.
5. 소스코드
#include <iostream>
using namespace std;
int main(){
int N; //여학생
int M; //남학생
int K; //인턴쉽에 참가해야하는 인원
cin>>N>>M>>K;
int team = 0; //팀 개수
while(N >= 2 && M >= 1 && N+M >= K + 3){
N -= 2;
M -= 1;
team++;
}
cout<<team;
}#include <iostream>
728x90
'차근차근 알고리즘 > Greedy' 카테고리의 다른 글
[백준/BOJ/C++] 11047번 동전 0 - Greedy (0) | 2021.01.26 |
---|---|
[백준/BOJ/C++] 11399번 ATM - Greedy (0) | 2021.01.26 |
[백준/BOJ/C++] 10610번 30 - Greedy (0) | 2021.01.26 |