Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 오퍼레이팅시스템
- Stack
- cs
- 컴퓨터공학과
- OS
- 브루트포스
- 북리뷰
- 문제풀이
- 백준
- 오에스
- c++
- 정석학술정보관
- 코딩
- 정석
- 개발
- 코테
- 너비우선탐색
- 컴공
- 스택
- coding
- 자료구조
- Operating System
- Computer science
- bfs
- 그래프
- DP
- 알고리즘
- 구현
- vector
- 컴공과
Archives
- Today
- Total
Little Jay
[C++] 백준 13164번 - 행복한 유치원 본문
Greedy하게 풀 수 있는 문제이다.
아이디어를 한번에 떠올리기가 어려워서 다른분들의 블로그를 참고했다.
사실 아이디어는 여러개가 있었지만 (부분 합 문제 등) 너무 구현이 어려워서 다른 분들의 블로그를 참고했다.
결국 우리가 원하는것은 앞사람과 뒷 사람의 차이(변화량)을 찾는것이다. 따라서 이를 sort시켜서 k-1개 만큼 뽑아내면 된다.
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
int n, k;
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n >> k;
vector<int> v(n);
for (auto& i : v) cin >> i;
vector<int> diff(n - 1);
for (int i = 0; i < diff.size(); i++) {
diff[i] = v[i + 1] - v[i];
}
sort(diff.begin(), diff.end(), greater<int>());
int ans = 0;
for (int i = k - 1; i < diff.size(); i++) {
ans += diff[i];
}
cout << ans << endl;
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 11725번 - 트리의 부모 찾기 (0) | 2022.09.22 |
---|---|
[C++] 백준 14675번 - 단절점과 단절선 (1) | 2022.09.19 |
[C++] 백준 10026번 - 적녹색약 (0) | 2022.08.31 |
[C++] 백준 1965번 - 상자 넣기 (0) | 2022.08.30 |
[C++] 백준 1759번 - 암호 만들기 (0) | 2022.08.26 |
Comments