728x90
반응형
https://www.acmicpc.net/problem/13904
13904번: 과제
예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다.
www.acmicpc.net
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<pair<int, int>> v;
int arr[1001] = {0, };
for(int i = 0; i < n; i++){
int d, w;
cin >> d >> w;
v.push_back({w, d});
}
sort(v.begin(), v.end(), greater<>());
int sum = 0;
for(int i = 0; i < n; i++){
for(int j = v[i].second; j >= 1; j--){
if(arr[j] == 0){
arr[j] = v[i].first;
sum += v[i].first;
break;
}
}
}
cout << sum << endl;
return 0;
}
먼저, (과제 점수, 남은 일수)를 과제 점수가 높은 순으로 정렬하면 다음과 같다.
60 4
50 2
40 4
30 3
20 1
10 4
5 6
정렬된 순서대로 마감일에 최대한 가깝게 넣어준다.
첫 번째 과제는 4일에 하도록 설정한다. arr[4] = 60
두 번째 과제는 2일에 하도록 설정한다. arr[2] = 50
세 번째 과제는 이미 4일에 하기로 한 과제가 존재하므로, 마감일에 최대한 가깝게 3일에 하도록 설정한다. arr[3] = 40
네 번째 과제는 이미 3일, 2일에 하기로 한 과제가 존재하므로, 마감일에 최대한 가깝게 1일에 하도록 설정한다. arr[1] = 30
다섯 번째 과제와 여섯 번째 과제는 마감일 안에 할 수 없으므로 패스
마지막 과제는 6일에 하도록 설정한다. arr[6] = 5
따라서 최대 점수는 60 + 50 + 40 + 30 + 5 = 185점이 된다.
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 1874번 스택 수열 (C++) (0) | 2022.08.18 |
---|---|
[BOJ] 2573번 빙산 (C++) (0) | 2022.08.17 |
[BOJ] 2665번 미로 만들기 (C++) (0) | 2022.08.15 |
[BOJ] 16927번 배열 돌리기 2 (C++) (0) | 2022.08.12 |
[BOJ] 16926번 배열 돌리기 (C++) (0) | 2022.08.11 |