[백준 13164번] 행복 유치원 (C++)PS/백준 알고리즘[BOJ]2023. 12. 21. 13:46
Table of Contents
728x90
반응형
그리디 문제이다. 조를 나누는 문제이므로 K-1의 칸막이를 설치한다고 생각할 수 있다.
직관: 한 조의 차이가 가장 작아야 하므로 일단 가장 차이가 큰 곳에 칸막이를 우선적으로 설치하면 차이가 최대가 될 것 같다.
반례: 가정 결론 도출
코드
#include<iostream>
#include<algorithm>
#define F first
#define S second
using namespace std;
int N, K, h[300000], sum;
pair<int, int> dif[300000];
bool devide[300000];
int main(void){
cin.tie(0);
cout.tie(0);
ios_base::sync_with_stdio(0);
cin >> N >> K;
for(int i=0; i<N; i++) cin >> h[i];
for(int i=0; i<N-1; i++) dif[i] = {h[i+1] - h[i], i};
sort(dif, dif + N-1, greater<pair<int, int>>());
int j = K-1;
//for(int i=0; i<N-1; i++) cout << dif[i].first << " ";
for(int i=0; i<K-1; i++) devide[dif[i].S] = true;
int st = 0;
devide[N-1] = true;
for(int en=0; en<N; en++){
if(devide[en]) {
sum += h[en] - h[st];
st = en + 1;
}
}
cout << sum;
return 0;
}
728x90
반응형
'PS > 백준 알고리즘[BOJ]' 카테고리의 다른 글
[백준 11054번] 가장 긴 바이토닉 부분 수열 (C++) (0) | 2024.01.08 |
---|---|
[백준 1238번] 파티 (C++) (1) | 2024.01.04 |
[백준 2504번] 괄호의 값 (C++) (1) | 2023.12.21 |
[백준 10026] 적록색약 (C++) (0) | 2023.12.19 |
[백준 00000] 치즈 (C++) (0) | 2023.12.19 |
@BE_개발자 :: 경이로운 개발일기
경이로운 BE 개발자가 되기 위한 프로그래밍 공부 기록장
도움이 되었다면 "❤️" 또는 "👍🏻" 해주세요! 문의는 아래 이메일로 보내주세요.