컴공생의 다이어리
큰 수의 법칙 본문
큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하야 가장 큰 수를 만드는 법치이다. 단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특정이다.
질문
배열의 크기 N, 숫자가 더해지는 횟수 M, 그리고 K가 주어질 때 큰 수의 법칙에 따른 결과를 출력하시오.
코드로 구현
아래는 파이썬으로 구현한 코드이다.
N,M,K=map(int,input().split())
data=list(map(int,input().split()))
data.sort()
first=data[N-1]
second=data[N-2]
result=0
count1=(M//(K+1))*K+M%(K+1)
count2=M-count1
result=count1*first+count2*second
print(result)
아래는 c/c++으로 구현한 코드이다.
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, M, K;
int arr[1000] = { 0, };
std::cin >> n >> M >> K;
for (int i = 0; i < n; i++) {
std::cin >> arr[i];
}
sort(arr, arr + n);
int first = arr[n - 1];
int second = arr[n - 2];
int result = 0;
int count1 = M / (K + 1) * K + M % (K + 1);
int count2 = M - count1;
result = count1 * first + count2 * second;
std::cout << result;
return 0;
}
www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791162243077
728x90
'Development > Algorithm & Coding Test' 카테고리의 다른 글
모험가 길드 (0) | 2020.12.18 |
---|---|
1이 될 때까지 (0) | 2020.12.17 |
숫자 카드 게임 (0) | 2020.12.17 |
거스름돈 (0) | 2020.12.17 |
CodeUp 기초 100문제 (0) | 2020.11.20 |
Comments