-
[Algorithm] 백준 13164 행복 유치원 - C++쾌락없는 책임 (공부)/알고리즘 문제풀이 2022. 3. 8. 14:11반응형
#include <iostream> #include <vector> #include <algorithm> #include <cmath> using namespace std; int n, k; int kids[300001]; int main(){ // init ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // input cin >> n >> k; if(k == n){ cout << "0\n"; return 0; } for(int i = 0; i < n; i++) cin >> kids[i]; // solve vector<int> differences; for(int i = 0; i < n-1; i++) differences.push_back(abs(kids[i] - kids[i+1])); sort(differences.begin(), differences.end()); int answer = 0; for(int i = 0; i < n-k; i++) answer += differences[i]; cout << answer << '\n'; }
그리디 중에서 규칙을 알아내면 괜찮은 문제였습니다. 일단 n == k 가 true 인 경우에는 1인 1 그룹이니 이를 위한 출력을 해준 뒤 그 외의 경우 차이를 순서대로 대입한 뒤 낮은 순에서 n-k 만큼 그룹을 지어주면 됩니다. 남은 차이들은 다른 그룹으로 분류를 해서 생산 단가를 피하는 전략입니다.
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
[Algorithm] 백준 2146 다리 만들기 - C++, BFS (0) 2022.03.13 [Algorithm] 백준 1976 여행가자 - C++, 분리집합 (0) 2022.03.09 [Algorithm] 백준 1043 거짓말 - C++, Union Find (0) 2022.03.07 [Algorithm] 백준 17070 파이프 옮기기 - C++, DFS (0) 2022.03.06 [Algorithm] 백준 10217 KCM Travel - C++, 다익스트라, DP (0) 2022.03.04