N

(SWEA c++)1859. 백만 장자 프로젝트 본문

SW Expert Academy

(SWEA c++)1859. 백만 장자 프로젝트

naeunchan 2020. 9. 28. 15:00
728x90
반응형

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LrsUaDxcDFAXc&categoryId=AV5LrsUaDxcDFAXc&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

while문

벡터로 입력받은 숫자 중에서 가장 큰 값을 max_element 함수를 이용해 찾아낸다.

그리고 v.begin()부터 max가 위치한 곳까지 값을 더해주도록 한다.

v.erase를 이용하여 v.begin()부터 max + 1까지 지워내면 max가 위치한 곳까지 지우게 된다.

벡터에서 모든 값이 지워지면 가장 큰 이익을 볼 수 있는 수를 구할 수 있다.

#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main(void)
{
    int t;
    cin >> t;
     
    for(int i = 1; i <= t; i++)
    {
        int n, num, start = 0;
        long long  sum = 0;
        vector<int> v;
        
        cin >> n;
         
        for(int j = 0; j < n; j++)
        {
            cin >> num;
            v.push_back(num);
        }
         
        while(!v.empty())
        {
            auto max = max_element(v.begin(), v.end());
             
            for(auto itr = v.begin(); itr != max; itr++)
                sum += *max - *itr;
            v.erase(v.begin(), max + 1);
        }
                 
        cout << "#" << i << " " << sum << endl;
    }
    return 0;
     
}
728x90
반응형