'll Hacker
BOJ - 11399 ATM 문제 풀이 본문
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
'Dev' 카테고리의 다른 글
EVI$ION 겨울방학 코테스터디 3주차 과제 (0) | 2025.01.18 |
---|---|
EVI$ION 겨울방학 코테스터디 2주차 과제 (0) | 2025.01.11 |
EVI$ION 겨울방학 코테스터디 1주차 과제 (5) | 2025.01.03 |
BOJ 1543 문서검색 문제 (2) | 2024.09.27 |
GitHub 사용법 (0) | 2024.09.20 |