[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