[C/C++] BOJ(백준) 15903 "카드 합체 놀이" 문제 풀이 & 소스 코드

반응형

#문제정보

처 : www.acmicpc.net/problem/15903

 

#문제분석

알고리즘 분류 : 그리디(GREEDY)

그냥 충실히 더해주기만 하면 되는 간단한 그리디 문제이다.

while (m--)
	{
		sort(card.begin(), card.end());
		temp = card[0] + card[1];
		card[0] = card[1] = temp;
	}

입력받은 m(합체 횟수) 만큼 반복을 돌려서 , sort로 오름차 정렬을 해준 뒤 문제에서 제시한 조건에 맞게 더한다.

자료형만 조심하면 딱히 어려운 부분은 없는 문제였다.

 

#소스코드

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
ll result;

int main()
{
	int n, m;
	cin >> n >> m;
	vector<ll> card;
	
	ll temp;
	while (n--)
	{
		cin >> temp;
		card.push_back(temp);
	}
	
	while (m--)
	{
		sort(card.begin(), card.end());
		temp = card[0] + card[1];
		card[0] = card[1] = temp;
	}
	
	for (int i = 0 ; i < card.size() ; ++i)
	{
		result += card[i];
	}
	
	cout << result;
	return 0;
}

 

반응형

댓글

Designed by JB FACTORY