728x90
이것이 코딩테스트다 큰 수의 법칙 실전 문제
'큰 수의 법칙'은 m번 더하여 가장 큰 수를 만드는 법칙이며, K번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다.
입력조건:
첫째 줄에N(2<=N<=1,000),M(1<=M<=10,000),K(1<=K<=10,000)의 자연수가 주어지며 각 자연수는 공백으로구분
둘째 줄에 N개의 자연수가 주어진다. 각 자연수는 공백으로 구분한다 단, 각각의 자연수는 1이상 10,000이하의 수로 주어진다. 입력으로 주어지는 K는 항상 M보다 작겉나 같다.
출력조건:
주어진 수들의 M번을 더하여 가장큰수를 만드는것이며 K번을 초과하여 더해질 수 없다.
입력예시 :
5 8 3
2 4 5 4 6
출력예시:46
#include <iostream>
using namespace std;
int main()
{
int N, M, K;
int a[1000];
int max= 0;
int result = 0;
int second = 0;
cin >> N >> M >> K;
for (int i = 0; i < N; i++)
{
cin >> a[i];
}
for (int i = 0; i < N; i++)
{
if (max < a[i])
{
max = a[i];
}
}
for (int i = 0; i < N; i++)
{
if (a[i] != max)
{
if (second < a[i])
{
second = a[i];
}
}
}
while (M != 0)
{
for (int i = 0; i < K; i++)
{
result += max;
--M;
}
if (max == second)
{
for (int i = 0; i < K; i++)
{
result += max;
--M;
}
}
else
{
result += second;
--M;
}
}
cout << result;
}
반응형
'CodingStudy' 카테고리의 다른 글
<CodingStudy>백준 10162:보물 (0) | 2022.07.21 |
---|---|
<CodingStudy>백준 5585번:거스름돈 (0) | 2022.07.20 |
<CodingStudy>백준 11399번:ATM (0) | 2022.07.19 |
<CodingStudy>Greedy3 (0) | 2022.07.19 |
<CodingStudy>Greedy2 (0) | 2022.07.19 |