ABOUT ME

알고리즘 공부하는 블로그 입니다.

Today
Yesterday
Total
  • Educational Codeforces Round 30 - A. Chores
    코드포스(CodeForce) 2018. 8. 17. 18:14
    반응형


    1. 문제


    2. 알고리즘

    키워드 - 구현


    * 문제 접근


    루바는 잡일을 하는데 효율적으로 일을 하고 싶어 한다.

    첫 라인에서 입력 받는 n, k, x 는

    n 은 총 잡일의 수, k 는 x 시간 동안 할 수 있는 일.. 해석 능력이 영 그지 같앗.


    두 번째 라인은 n 개의 잡일이 소요되는 각각의 시간이다.




    내림 차순으로 정렬을 하고 가장 소요시간이 큰 잡일을 k 개수 만큼 추려 낸다.

    정렬 된 잡일의 소요 시간을 0 부터 k 인덱스 까지 x 시간으로 치환 한다.


    치환 된 잡일배열에 모든 합계를 출력한다.


    이거 뭐 풀긴 풀었는대 설명도 이상하고, 해석을 잘못해서 그런가 아무튼 답은 맞는데 찝찝하다.


    3. 코드


    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #include<stdio.h>  
    #include<string.h>  
    #include<stdlib.h>  
    #include<queue>  
    #include<stack>  
    #include<math.h>  
    #include<vector>  
    #include<map>  
    #include<set>  
    #include<stdlib.h>  
    #include<cmath>  
    #include<string>  
    #include<algorithm>  
    #include<iostream>  
    #include <functional>         // greater 사용 위해 필요  
    using namespace std;
     
    int main()
    {
        long long n, k, x;
        cin >> n >> k >> x;
     
        vector<int> arr(n);
        for (int i = 0; i < n; i++)
            cin >> arr[i];
     
        // [내림차순 정렬]
        sort(arr.begin(), arr.end(), greater<int>());
     
        // [정렬된 배열에서 0 부터 k 까지 x 시간으로 치환]
        for (int i = 0; i < k; i++) {
            arr[i] = x;
        }
     
        int sol = 0;
        // [모든 소요시간을 합산하여 출력]
        for (int i = 0; i < n; i++)
            sol += arr[i];
        
        cout << sol<< endl;
        return 0;
    }
    cs

    반응형

    댓글

Designed by Tistory.