[BAEKJOON] NO.11399 ATM

박민주·2021년 9월 3일
0

BAEKJOON

목록 보기
3/10
post-thumbnail

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


이건 생각보다 간단하게 풀렸다.
2-30분 정도 걸렸던 것 같다!

문제를 읽어보니 걸리는 시간이 가장 적은 사람부터 인출했을 때
인출하는데 필요한 시간의 합의 최솟값을 구할 수 있었다.

얼마전에 알고리즘도감 보다가 구현해뒀던 삽입정렬 코드를 가져다가 썼다
이제 정렬 코드는 외우고 있어야 할 것 같기도..?

#include <iostream>
using namespace std;

int main(void)
{
    int count_people = 0;
    cin>>count_people;

    int *time_withdrawals = new int[count_people];

    for(int i=0; i<count_people;i++)
    {
        cin>>time_withdrawals[i];
    }

    // 합의 최솟값이니까 가장 걸리는 시간이 적은 사람부터 인출하면 됨
    // 삽입정렬
    for(int i=1; i<count_people; i++)
    {
        int tmp = time_withdrawals[i];
        int idx = 0;
        for(int j=i-1; j>=0; j--)
        {
            if(time_withdrawals[j] > tmp)
            {
                time_withdrawals[j+1] = time_withdrawals[j];
                idx=j;
            }
            else
            {
                idx=j+1;
                break;
            }
        }
        time_withdrawals[idx]=tmp;
    }

    int *answer = new int[count_people];
    for(int i=0; i<count_people; i++)
    {
        for(int j=0; j<=i; j++)
        {
            answer[i] += time_withdrawals[j];
        }
    }

    int ans = 0;

    for(int i=0; i<count_people; i++)
    {
        ans += answer[i];
    }

    cout<<ans<<endl;

    delete[] time_withdrawals;
    delete[] answer;
    
    return 0;
}
profile
Game Programmer

0개의 댓글