프로그래머스Lv2 - 기능개발

요리하는코더·2021년 10월 18일
0

알고리즘 - 문제

목록 보기
27/48
post-thumbnail

코드

#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <iostream>

using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    int day = 0, cal = -1, now = 0;
    for(int i=0;i<progresses.size();i++) {
        // 날짜 계산
        cal = ceil((double)(100 - progresses[i]) / speeds[i]);
        if(cal <= day) {
            // 이미 처리된 작업 증가
            now++;
        } else {
            if(day != 0) {
                // 다음 작업을 위해 그전 작업 개수 증가
                answer.push_back(now);
            }
            // 날짜 업데이트
            day = cal;
            now = 1;
        }
    }
    answer.push_back(now);
    return answer;
}

풀이 및 소감

단순히 구현으로 해결한 문제이다. 먼저 작업량을 기준으로 계산 된 날짜를 저장했다. 그리고 그 날짜를 기준으로 적으면 동시에 배포 될 수 있으므로 개수를 증가시켜 주었다. 만약 날짜가 초기 값이 아니면 새로 처리된 것이므로 answer에 저장해주었다. 마지막 작업은 따로 저장해야해서 for문 밖에서 한번 더 저장을 해주었다. 가장 좋아요가 많은 풀이를 보니 ++answer.back()을 사용했는데 나도 그것을 활용했으면 좀 더 깔끔하게 작성했을 것 같다.

profile
요리 좋아하는 코린이

0개의 댓글