-
[백준/BOJ] 14247번 나무 자르기 (C++)알고리즘 문제풀이/백준 2020. 12. 26. 19:52
그리디 유형 문제입니다.
나무가 자라는 가중치 값을 기준으로 오름차순 정렬을 한 후, 가중치가 작은 값부터 나무를 자르면 해결할 수 있는 문제입니다.
#include <iostream> #include <vector> #include <algorithm> using namespace std; int cmp(pair<long long, long long> a, pair<long long, long long> b) { return a.second < b.second; // 가중치 값을 기준으로 오름차순 } int main(void) { ios_base::sync_with_stdio(false); cin.tie(0); int n; cin>>n; vector<long long> height(n); vector<long long> weight(n); vector<pair<long long, long long > > tree; for(int i = 0; i < n; i++) { cin>>height[i]; } for(int i = 0; i < n; i++) { cin>>weight[i]; } for(int i = 0; i < n; i++) { tree.push_back({height[i], weight[i]}); } sort(tree.begin(), tree.end(), cmp); long long answer = 0; for(int i = 0; i < n; i++) { answer += tree[i].first + tree[i].second * i; } cout<<answer; }
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준/BOJ] 6603번 로또 (C++) (0) 2020.12.28 [백준/BOJ] 11508번 2+1 세일 (C++) (0) 2020.12.27 [백준/BOJ] 13305번 주유소 (C++) (0) 2020.12.25 [백준/BOJ] 2138번 전구와 스위치 (C++) (0) 2020.12.25 [백준/BOJ] 9019번 DSLR (C++) (0) 2020.12.23