leetcode 517 - Super Washing Machines

최대 1 분 소요

문제

leetcode 517 - Super Washing Machines 풀러가기

문제 코드(C++)

  1. 전체 코드

    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
    class Solution {
    public:
        int findMinMoves(vector<int>& machines) {
            
            int s = machines.size();
            
            if(s==1){
                return 0;
            }
            
            int sum = accumulate(machines.begin(), machines.end(), 0);
            
            if(sum%s != 0){
                return -1;
            }
            
            int avg = sum/s;
            int tmp = 0;
            int ans = 0;
            
            for(int i=0;i<s;i++){
                tmp += machines[i]-avg;
                ans = max(max(abs(tmp), machines[i]-avg), ans);
            }
            
            return ans;
        }
    };
    cs
    • 11~15번째 줄 : 총 세탁물의 양을 구한 뒤, 모든 세탁기에 나눠떨어지지 않으면 -1을 return 한다.
    • 21~24번째 줄 : 모든 세탁기를 순회하면서, 현재 세탁기의 세탁물의 양에서 평균 세탁 양을 빼고, 그 값을 tmp에 더한다.
      • 이때, 현재 세탁물의 양이 평균 세탁물의 양 보다 작으면 -가 되므로 tmp값이 줄어든다.
      • tmp의 절대값과 현재 세탁물의 양에서 평균을 뺀 값과, 지금까지의 정답을 비교하여 그 중 최대 값을 구한다.

    Runtime: 16 ms, faster than 88.02% of C++ online submissions for Super Washing Machines.

    Memory Usage: 13.4 MB, less than 20.31% of C++ online submissions for Super Washing Machines.







아직 배움의 과정에 있는 학생이니 내용에 부족한 점이 보이면 지적은 하되, 비난은 하지 말아주세요!!

댓글남기기