https://www.acmicpc.net/problem/1246
사고과정)
(가격금액 * 구매 가능한 사람수 )가 가장 큰 값을 찾으면 된다.
입력받은 가격들 중 가장 큰 값을 max_element로 찾고, i = 1 ~ max_element까지 반복하면서
구매가능한 사람수를 조건문으로 걸고 곱한 합을 비교하면 된다.
예외사항으로, 사람수가 계란수보다 많으면, 예를 들어 가능한 사람수는 5명이라 count가 5는 되지만, 계란 수는 4라 오류가 난다. 그렇기 때문에 이럴 경우엔 count의 최대값은 계란 수로 제한해줘야한다.
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int eggnum, people; // eggnum = N, people = M
cin >> eggnum >> people;
int* p = new int[people];
for (int i = 0; i < people; i++)
cin >> p[i];
int max = *max_element(p, p + people);
int max_revenue = 0;
int index = 0;
for (int i = 1; i <= max; i++)
{
int count = 0;
for (int j = 0; j < people; j++)
{
if (p[j] >= i)
count++;
}
if (eggnum < people && count >= eggnum) // 계란 수가 사람보다 적을경우 and 수가 계란 수를 초과하면
count = eggnum; // 최대한 계란수가 되겠지.
if (max_revenue < i * count)
{
max_revenue = i * count;
index = i;
}
}
cout << index << " " << max_revenue;
return 0;
}
계란수 < 사람수인 예외경우를 생각하지 못해서 두번 연속으로 내리 틀렸다...
'백준 문제풀이 > 실버5' 카테고리의 다른 글
백준 1316번 - 그룹 단어 체커 (0) | 2021.11.20 |
---|---|
백준 1475번 - 방 번호 (0) | 2021.11.14 |
백준 1439번 - 뒤집기 (0) | 2021.11.06 |
백준 1427번 - 소트인사이드 (0) | 2021.11.03 |
백준 1181번 - 단어 정렬 (0) | 2021.10.30 |