λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Algorithm πŸ§‘πŸ»‍πŸ’»/λ°±μ€€(BOJ)

[λ°±μ€€,c++] 13164번 - 행볡 μœ μΉ˜μ›

by μ•ˆμ£Όν˜• 2022. 7. 27.

문제

 

13164번: 행볡 μœ μΉ˜μ›

행볡 μœ μΉ˜μ› 원μž₯인 νƒœμ–‘μ΄λŠ” μ–΄λŠ λ‚  Nλͺ…μ˜ 원생듀을 ν‚€ μˆœμ„œλŒ€λ‘œ 일렬둜 쀄 μ„Έμš°κ³ , 총 K개의 쑰둜 λ‚˜λˆ„λ €κ³  ν•œλ‹€. 각 μ‘°μ—λŠ” 원생이 적어도 ν•œ λͺ… μžˆμ–΄μ•Ό ν•˜λ©°, 같은 쑰에 μ†ν•œ 원생듀은 μ„œλ‘œ

www.acmicpc.net

 

μ½”λ“œ

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int N, K; cin>>N>>K;
    vector<long long int> v(N), cost(N-1);
    
    for(int i=0; i<N; i++) cin>>v[i];
    
    sort(v.begin(), v.end());
    
    for(int i=1; i<N; i++) cost[i-1] = v[i] - v[i-1];
    
    sort(cost.begin(), cost.end());
    
    long long int ans = 0;
    for(int i=0; i<N-K; i++) ans += cost[i];
    
    cout<<ans;
}

 

풀이

μ €λŠ” μ²˜μŒμ— λͺ‡ λͺ…μ”© λ¬Άμ–΄μ•Ό 할지 Nκ³Ό Kλ₯Ό 가지고 μ–΄λ– ν•œ κ·œμΉ™μ„ μ°Ύμ•„ ν•΄κ²°ν•˜λ €κ³  ν–ˆμ§€λ§Œ "μ‘°λ³„λ‘œ μΈμ›μˆ˜κ°€ 같을 ν•„μš”λŠ” μ—†λ‹€."λΌλŠ” 쑰건 λ•Œλ¬Έμ— ν•΄λ‹Ή 방법은 닡이 μ—†λ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ–΄ λ‹€λ₯Έ λ°©λ²•μœΌλ‘œ μ ‘κ·Όν–ˆμŠ΅λ‹ˆλ‹€.

"μ‘°λ§ˆλ‹€ ν‹°μ…”μΈ λ₯Ό λ§žμΆ”λŠ” λΉ„μš©μ€ μ‘°μ—μ„œ κ°€μž₯ ν‚€κ°€ 큰 원생과 κ°€μž₯ ν‚€κ°€ μž‘μ€ μ›μƒμ˜ ν‚€ 차이만큼 λ“ λ‹€."

즉, μ˜†μ‚¬λžŒκ³Όμ˜ ν‚€ 차이λ₯Ό μ €μž₯ν•œ λ’€, κ·Έ ν‚€ μ°¨μ΄μ—μ„œ 큰 μˆœμ„œλŒ€λ‘œ K개만큼 μ œμ™Έν•΄μ€€ λ‹€μŒ μ œμ™Έλ˜μ§€ μ•Šμ€ ν‚€ 차이듀을 μ „λΆ€ λ”ν•œλ‹€λ©΄ 이것이 μ‘°λ³„λ‘œ λ“œλŠ” λΉ„μš©μ΄ λ©λ‹ˆλ‹€. K만큼 μ œμ™Έν•˜λŠ” μ΄μœ λŠ” ν‚€ μˆœμ„œλŒ€λ‘œ 정렬을 ν–ˆμ„ 경우, ν‚€κ°€ 큰 원생듀은 혼자 그룹을 λ§Œλ“€μ—ˆμ„ λ•Œ λΉ„μš©μ΄ λ°œμƒν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

μ˜ˆμ‹œλ‘œ ν•œλ²ˆ μ„€λͺ…ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

5 2
2 5 6 7 9

μœ„μ™€ 같은 μž…λ ₯이 μ£Όμ–΄μ‘Œμ„ λ•Œ (2), (5, 6, 7, 9)둜 묢으면 μ΅œμ†ŒλΉ„μš©μΈ 4κ°€ λ‚˜μ˜€κ²Œ λ©λ‹ˆλ‹€.

3 1 1 2

μœ„ μž…λ ₯을 가지고 μ˜† μ‚¬λžŒμ˜ ν‚€ 차이λ₯Ό κ΅¬ν•˜λ©΄ μœ„μ™€ κ°™μŠ΅λ‹ˆλ‹€.

1 1 2 3

ν‚€ 차이λ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜λ©΄ μœ„μ™€ κ°™μŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ 값이 크기에 혼자 그룹을 λ§Œλ“€μ–΄ λ”ν•˜μ§€ μ•Šμ•„λ„ λ˜λŠ” (N-K) 개λ₯Ό μ œμ™Έν•˜κ³  λ”ν•˜κΈ°μ— 1+1+2λ₯Ό λ”ν•œ 것이 (2), (5,6,7,9)둜 λ‚˜λˆˆ 것과 같은 값이 λ‚˜μ˜€κ²Œ λ˜μ–΄ 정닡이 λ©λ‹ˆλ‹€.

λŒ“κΈ€