※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 24378번 문제인 КАСТИНГ이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/24378
24378번: КАСТИНГ
В театъра работят n актьори. Известно е, че сред тях a са високи, b – синеоки и с – руси. За главната роля в новия спектакъл е необходим само еди
www.acmicpc.net
문제의 상황을 우리말로 서술하면 다음과 같다.
BOJ 24378: 캐스팅
문제)
극단에 n명의 배우들이 있습니다. 이 n명의 배우들 중 a명의 배우는 키가 크고, b명의 배우는 파란 눈을 가지고 있으며, c명의 배우는 금발입니다. 이 극단에서는 새로운 쇼를 진행할 키가 크고 파란 눈을 가진 금발 배우를 한 명 캐스팅하려고 합니다. 따라서 감독은 조건을 만족하는 극단의 배우들의 면접을 한 명씩 보려고 합니다.
감독이 면접해야하는 극단의 배우들의 수로 가능한 최댓값과 최솟값을 구하는 프로그램을 작성하세요.
입력)
첫째 줄에 입력으로 1 또는 2가 주어집니다.
1이 주어졌을 때에는 감독이 면접해야하는 극단의 배우들의 수로 가능한 최솟값을 구합니다.
2가 주어졌을 때에는 감독이 면접해야하는 극단의 배우들의 수로 가능한 최댓값을 구합니다.
둘째 줄에 네 개의 정수 n, a, b, c가 공백을 사이에 두고 주어집니다.
출력)
첫째 줄에 입력에 따라 감독이 면접해야하는 극단의 배우들의 수로 가능한 최솟값 또는 최댓값에 해당하는 정수 하나를 출력합니다.
제한)
1 ≤ n ≤ 10,000
0 ≤ a ≤ n
0 ≤ b ≤ n
0 ≤ c ≤ n
먼저 최댓값을 구해보자. a, b, c 중 가장 작은 값을 k라 하자. 이 때, k명의 배우들이 키가 크고 파란 눈과 금발을 가질 경우 가장 많은 수의 배우의 면접을 봐야 한다. k+1명의 후보가 등장하는 것은 불가능하다.
다음으로 최솟값을 구해보자. 이는 후보가 될 수 없는 배우의 수를 최대화하는 것과 같은 문제이다. 이러한 경우의 수는 키가 크지 못한 n-a명의 배우와 파란 눈을 가지지 않은 n-b명의 배우, 금발이 아닌 n-c명의 배우가 모두 다른 사람인 경우 그 수가 가장 커진다. 단, 모두 다른 사람이 될 수 없을 정도로 (n-a)+(n-b)+(n-c)가 큰 경우 답은 0으로 출력해야 한다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int q, n, a, b, c; cin >> q >> n >> a >> b >> c;
if (q == 1) cout << max(0, n - (n - a) - (n - b) - (n - c));
else cout << min(a, min(b, c));
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 24379 // C++] КИФЛИЧКИ (0) | 2022.02.11 |
---|---|
[BOJ 24377 // C++] ИГРА (0) | 2022.02.11 |
[BOJ 6443 // C++] 애너그램 (0) | 2022.02.10 |
[BOJ 1947 // C++] 선물 전달 (0) | 2022.02.09 |
[BOJ 10978 // C++] 기숙사 재배정 (0) | 2022.02.08 |