[백준 31280] ФАКИР (C#, C++) - soo:bak
작성일 :
문제 링크
설명
마술사가 자신의 마법 모자에서 ‘모든 색깔의 쥐’ 를 적어도 한 마리씩 꺼내기 위해 필요한,
최소한의 쥐 마리 수를 계산하는 문제입니다.
쥐들은 회색
, 흰색
, 검은색
그리고 다채로운 색
의 쥐들이 있습니다.
마술사가 모든 색깔의 쥐를 ‘적어도 한 마리씩’ 꺼내려면, 적어도 한 색깔을 제외한 모든 색깔의 쥐들을 전부 꺼낸 후,
남은 한 색깔의 쥐 중 한 마리를 더 꺼내야 합니다.
이 때, 가장 적은 수의 쥐를 가진 색깔을 제외한 모든 색깔의 쥐들을 꺼내고, 마지막으로 그 색깔의 쥐 한마리를 더 꺼내면 됩니다.
이렇게 하면 모든 색깔의 쥐를 적어도 한마리씩 꺼낸 것이 보장됩니다.
입력으로 각 색깔의 쥐 수 a
, b
, c
, d
를 받습니다.
최소한의로 필요한 쥐의 수는 a
+ b
+ c
+ d
- min(a, b, c, d)
+ 1
으로 계산됩니다.
여기서, min(a, b, c, d)
는 가장 적은 수의 쥐를 가진 색깔의 쥐 수 를 의미하고,
이 값을 전체 쥐의 수에서 빼면, 나머지 세 색깔의 쥐들을 모두 꺼낸 수가 됩니다.
이제, 여기에 1
을 더하면, 마지막으로 남은 색깔의 쥐 한 마리를 더 꺼내, 모든 색깔의 쥐를 적어도 한 마리씩 꺼낸 것이 됩니다.
최종적으로, 계산된 최소한의 쥐 마리 수를 출력합니다.
Code
[ C# ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace Solution {
class Program {
static void Main(string[] args) {
var inputs = Console.ReadLine()!.Split(' ').Select(int.Parse).ToArray();
int a = inputs[0], b = inputs[1], c = inputs[2], d = inputs[3];
var minimumMice = inputs.Sum() - inputs.Min() + 1;
Console.WriteLine(minimumMice);
}
}
}
[ C++ ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int a, b, c, d; cin >> a >> b >> c >> d;
int minimumMice = a + b + c + d - min({a, b, c, d}) + 1;
cout << minimumMice << "\n";
return 0;
}