'll Hacker

BOJ - 11399 ATM 문제 풀이 본문

Dev

BOJ - 11399 ATM 문제 풀이

씨이오가 되자 2024. 9. 26. 02:19
Contents
728x90

https://www.acmicpc.net/problem/11399

 

 

 

문제를 이해를 해보자면

 

모두 5명이고

각 사람 당 돈을 인출하는데 필요한 시간을 5번 입력받게되는데, 문제 그대로 이해하면 될 것 같다.

각 사람 당 기다리는 시간을 합을 하면 되고

그 합을 또 합을 하게 되는...... 약간 ptsd올 수도 있음...

왼쪽 이미지를 보면 이해가 될 것 같다.

 

나는 돈을 인출하는데 필요한 시간이 짧은 사람이 앞에 올수록

그니까,, 현재 상황에서 시간효율성이 더 좋은게 뭔가 보면 시간이 짧은게 더 좋은 것 같아서 오름차순 정렬을 한 뒤에, 누적합하면 될 것 같다.

 

 

 

 

 

코드 참고

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int solution(int N, vector<int> times)
{
    int sum=0,total_sum=0,tmp;
    
    sort(times.begin(),times.end(),less<int>());
    
    for(int j=0;j<N;j++)
    {
        sum += times[j];
        total_sum += sum;
    }   


    return total_sum;
}

int main()
{
    //입력
    int N, result;
    cin >> N ;
    vector<int> times(N);
    
    for(int i=0;i<N;i++)
    {
        cin >> times[i];
        
    }
    
    //계산
    result = solution(N,times);
    
    //출력
    cout<<result;

    return 0;
}


그리디 - 현재 상황에서 지금 당장 좋은 것만 고르는 방법

정렬 함수 - sort(start, end, cmp()); , #include <algorithm>사용.

vector -> #include <vector> 사용 

728x90