본문 바로가기

백준/실버

[백준 20117번] 호반우 상인의 이상한 품질 계산법 (C++)

문제링크 : https://www.acmicpc.net/problem/20117

 

20117번: 호반우 상인의 이상한 품질 계산법

어떤 묶음에 있는 호반우의 품질이 [1, 2, 3, 4] 라고 하면 중간값인 3으로 모든 호반우의 품질을 계산한다. 따라서 이 묶음의 총 가격은 3 × 4 = 12 가 된다. 품질이 [6, 3, 9] 라고 하면 중간값인 6으로

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MAX 987654321
#define pii pair <int, int>

int arr[100001];

int main() 
{
	ios_base::sync_with_stdio(false); 
	cin.tie(0);
   
	int N;
	cin >> N;
	for(int i=0; i<N; i++)
	{
		cin >> arr[i];
	}
	sort(arr, arr+N);

	int result = 0;
	if(N%2) //홀수
	{
		for(int i= N-1; i>N/2; i--)
		{
			result += (arr[i] * 2);	//큰 값 곱하기 2
		}
		result += arr[N/2]; //가운데값 더하기
	}
	else //짝수
	{
		for(int i= N-1; i>=N/2; i--)
		{
			result += (arr[i] * 2);	//큰 값 곱하기 2
		}
	}

	cout << result;

    return 0;
}

먼저 정렬을 한 후, 제일 작은 값과 제일 큰 값 이렇게 쌍을 맞춰주면 된다.

큰 값 쪽을 중앙값으로 하기에 큰 값을 * 2해주면 된다.

 

홀수인 경우에는 이런식으로 진행하다보면 가운데 값이 하나 남으므로, 마지막에 가운데 값을 더해주면 된다.