Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
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
Archives
Today
Total
관리 메뉴

차근차근

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

대학교/Algorithm

[백준 2875] 대회 or 인턴

SWKo 2020. 2. 7. 02:56

0. 제목

  • 백준 2875 대회 or 인턴
  • BOJ 2875 대회 or 인턴
  • C++ 2875 대회 or 인턴

1. 문제

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


2. 풀이

  • 그리디 알고리즘을 사용하였다.
  • 2명의 여학생과 1명의 남학생이 팀을 만들어야 하고 K명이 인턴쉽에 참여해야 한다.
  • K명이 빠져야 하므로 여학생, 남학생에서 합하여 K명 만큼 모든 경우의 수대로 뺀다.
  • 여학생 2명과 남학생 1명이므로 위에서 뺀 값을 각각 2와 1로 나눈다. 두 값중 작은 값이 만들어질 수 있는 팀의 수가 된다.
  • 최대의 팀 수를 구해야 하므로 최대값과 만들어진 팀을 비교하면서 최대값을 갱신하고 최종 결과가 답이 된다.
  • 다음과 같은 방식으로도 답을 구할 수 있다.
  • min(N/2, M, (N+M-K)/3) 

3. 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
using namespace std;
 
int main(int argc, const char * argv[]) {
    int N, M, K;
    int a, b;
    int max = 0;
    
    cin >> N >> M >> K;
    for(int i = 0; i <= K; i++){
        a = (N - i) / 2;
        b = M - (K - i);
        if(max < min(a, b))
            max = min(a, b);
    }
    cout << max << '\n';
    
    return 0;
}
 
 

'대학교 > Algorithm' 카테고리의 다른 글

[백준 2579] 계단 오르기  (0) 2020.02.09
[백준 10610] 30  (0) 2020.02.08
[백준 2331] 반복수열  (0) 2020.02.07
[백준 11047] 동전 0  (0) 2020.02.05
[백준 10451] 순열 사이클  (0) 2020.02.02
Comments