본문 바로가기
Develop/백준 (Cpp)

[백준] 21312번 : 홀짝 칵테일 (C++)

by Tarra 2023. 9. 26.

21312번 : 홀짝 칵테일


문제)

정진이는 특별한 음료를 가지고 있다. 음료들은 정수로 표현되는 고유 번호를 가지고 있다. 정진이는 이 음료들을 섞어 만든 칵테일을 만든다. 이 칵테일은 홀짝 칵테일이라 부르는데, 홀짝 칵테일은 칵테일에 들어가는 음료들의 고유 번호의 곱에 해당하는 맛을 가진다.

정진이는 여러 가지 칵테일을 맛본 결과, 맛이 홀수인 칵테일이 맛이 짝수인 칵테일보다는 무조건 맛있다고 느낀다. 또한, 똑같이 홀수이거나 짝수인 맛을 가진 칵테일끼리는 맛이 더 큰 칵테일을 더 맛있다고 느낀다.

음료 셋의 고유 번호가 주어졌을 때 정진이가 이 음료들을 조합해 만들 수 있는 칵테일 중 가장 맛있다고 느끼는 칵테일의 맛을 알려주자.

칵테일을 만들 때는, 반드시 모든 음료를 사용할 필요는 없지만, 적어도 하나의 음료는 사용해야 한다. 하나의 음료만 사용하는 경우 칵테일의 맛은 사용한 음료의 고유 번호와 같다.

또한, 주어지는 세 음료는 서로 다른 고유 번호를 가지고 있다.

 

 

 

입력 :

첫째 줄에는 주어진 세 음료의 고유번호 ABC가 주어진다.

 

 

 

출력 :

첫째 줄에 만들 수 있는 홀짝 칵테일 중 가장 정진이가 맛있다고 느끼는 홀짝 칵테일의 맛을 출력한다.

 

 

 

 

 

풀이)

 

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
31
32
33
34
35
// 21312. 홀짝 칵테일
#include <iostream>
#include <vector>
 
using namespace std;
 
// 홀수들을 담아놓을 vector
vector<int> odd;
 
int main()
{
    int a;
    int ans = 1;
    for (int i = 0; i < 3; i++)
    {
        cin >> a;
        if (a % 2)
        {
            odd.push_back(a);
        }
        ans *= a;
    }
    
    if (odd.size())
    {
        // 홀수들을 곱해야 하므로 ans를 1로 초기화
        ans = 1;
        // odd의 원소들을 ans에 곱해준다.
        for (auto ele : odd) ans *= ele;
        cout << ans;
    }
    else cout << ans;
 
    return 0;
}
cs

출처 : https://www.acmicpc.net/problem/21312 

 

21312번: 홀짝 칵테일

정진이는 특별한 음료를 가지고 있다. 음료들은 정수로 표현되는 고유 번호를 가지고 있다. 정진이는 이 음료들을 섞어 만든 칵테일을 만든다. 이 칵테일은 홀짝 칵테일이라 부르는데, 홀짝 칵

www.acmicpc.net