728x90
시간 제한 : 1초
메모리 제한 : 128MB
입력
첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100), (0 ≤ N ≤ 100), (0 ≤ K ≤ M+N),
출력
만들 수 있는 팀의 최대값을 출력하면 된다.
소스코드
#include <iostream> using namespace std; int main(void) { int n, m, k, max, restN, restM; cin >> n >> m >> k; max = (n / 2) < m ? (n / 2) : m; restN = n - max * 2, restM = m - max; if (restN + restM >= k) cout << max; else { if ((k - restN - restM) % 3 == 0) max -= (k - restN - restM) / 3; else max -= (k - restN - restM) / 3 + 1; cout << max; } }
Tip
그리디로 풀 수 있다. 최대한 팀을 유지하는 방향으로 설계하면 된다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 3059 - 등장하지 않는 문자의 합 (0) | 2018.01.31 |
---|---|
백준] 9324 - 진짜 메시지(ACM-ICPC Regional) (0) | 2018.01.31 |
백준] 3035 - 스캐너(COCI 2006/2007) (0) | 2018.01.30 |
백준] 5046 - 전국 대학생 프로그래밍 대회 동아리 연합(ACM-ICPC Regional) (0) | 2018.01.26 |
백준] 11048 - 이동하기 (0) | 2018.01.25 |