본문 바로가기

백준/실버

[백준 12845번] 모두의 마블 (C++)

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

 

12845번: 모두의 마블

영관이는 게임을 좋아한다. 별의별 게임을 다 하지만 그 중에서 제일 좋아하는 게임은 모두의 마블이다. 어김없이 오늘도 영관이는 학교 가는 버스에서 캐릭터 합성 이벤트를 참여했다. 이번 이

www.acmicpc.net

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

int arr[1001];

int main()
{
    ios_base::sync_with_stdio(0); 
	cin.tie(0);

    int N;
    cin >> N;
    for(int i=0; i<N; i++)
    {
        cin >> arr[i];
    }
    
    sort(arr, arr+N, greater<>()); //오름차순 정렬

    int result = 0;
    for(int i=1; i<N; i++)
    {
        result += (arr[0] + arr[i]); //하나씩 더해주기
    }
    cout << result;
    return 0;
}

큰 수부터 정렬하기 위해서 오름차순 정렬을 해준다.

제일 큰 수인 맨 앞에 숫자와 인접한 바로 다음 수를 계속해서 더해준다.

맨 앞에 숫자와 인접한 바로 뒤에 숫자를 더해주고 나서 합쳐지는데, 이때 레벨은 맨 처음 숫자의 레벨이다.

따라서 맨 처음 숫자에 계속해서 인접한 숫자를 붙여주면서 카드를 합성해주는 것과 다를바 없다.