알고리즘 모음(C++)

백준 21312 - 홀짝 칵테일(C++) 본문

백준

백준 21312 - 홀짝 칵테일(C++)

공대생의 잡다한 사전 2022. 3. 23. 20:10

문제 링크입니다. https://www.acmicpc.net/problem/21312

 

21312번: 홀짝 칵테일

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

www.acmicpc.net

정렬 기준을 이용해 풀 수 있는 문제였습니다.

고유 번호 A, B, C를 이용해 칵테일을 만들때, 가장 맛있는 칵테일을 구하는 문제입니다.\

만들 수 있는 칵테일의 수는 7개입니다.

이때 크다고 느끼는 칵테일을 확인하보겠습니다.

1. X가 홀수, Y가 짝수 -> X가 더 맛있음

2. X가 홀수, Y가 홀수 -> 두 수중 더 큰수가 맛있음

3. X가 짝수, Y가 홀수 -> Y가 더 맛있음

4. X가 짝수, Y가 짝수 -> 두 수중 더 큰수가 맛있음

 

해당 기준대로 정렬 또는 조건문을 통해 큰 수를 찾으면 됩니다.

 

 

자세한 것은 코드를 참고해주세요

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
#include <stack>
#include <cmath>
#define INF 987654321

using namespace std;

int A, B, C;
vector<int> sum;

bool cmp(int x, int y) {
	if (x % 2 == 1 && y % 2 == 0) return false;
	else if (x % 2 == 1 && y % 2 == 1) {
		if (x < y) return true;
		else return false;
	}
	else if (x % 2 == 0 && y % 2 == 1) return true;
	else {
		if (x < y) return true;
		else return false;
	}
}

void solve() {
	sum.push_back(A);
	sum.push_back(B);
	sum.push_back(C);
	sum.push_back(A * B);
	sum.push_back(A * C);
	sum.push_back(B * C);
	sum.push_back(A * B * C);
	sort(sum.begin(), sum.end(), cmp);
	cout << sum[sum.size() - 1];
}

int main()
{
	cin.tie(0);
	cout.tie(0);
	cin >> A >> B >> C;
	solve();
	return 0;
}

 

 

질문 및 조언 댓글 남겨주세요