-
백준 2109 순회강연 - C++ 라이브러리로 간단하게쾌락없는 책임 (공부)/알고리즘 문제풀이 2021. 3. 26. 22:21반응형
백준 2109 : www.acmicpc.net/problem/2109
#include <iostream> #include <algorithm> #include <vector> using namespace std; bool visit[10001]; int n, d, p, res = 0; vector<pair<int, int>> arr; // 금액, 날짜 bool comp(pair<int, int> a, pair<int, int> b){ return a.first >= b.first; } int main(){ scanf("%d", &n); for(int i = 0; i < n; i++){ scanf("%d %d", &p, &d); arr.push_back(pair<int, int>(p, d)); } sort(arr.begin(), arr.end(), comp); for(int i = 0; i < arr.size(); i++){ for(int j = arr[i].second; j >= 1; j--){ if(!visit[j]){ visit[j] = true; res += arr[i].first; break; } } } printf("%d\n", res); }
c++ 라이브러리의 함수를 이용하면 크게 어렵지는 않았다. 대신 pair의 비교 방식을 함수화 할 필요가 있었다.
위 코드의 순서는
1. 입력값을 받는다
2. 강의의 금액 - p, 날짜 - d를 받아서 벡터에 순차로 넣어준다
3. 벡터에 들어간 값을 금액 우선으로 넣는다
4. 금액순으로 하나하나 보면서 visit 배열을 이용해 날짜가 비어있다면 강연을 가는걸로 처리해준다
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
백준 2437 저울 - C++ 그리디 알고리즘 (0) 2021.04.02 백준 1939 중량제한 - C++, BFS, 이진탐색 (0) 2021.03.28 백준 9251, 9252 - Longest Common Subsequence (0) 2021.03.04 백준 14226 이모티콘 - 큐를 이용한 너비 우선 탐색 (0) 2021.02.26 백준 1725 히스토그램 - 스택을 이용한 C++ (0) 2021.02.22