euisblue
42586. 기능개발

Level 2 기능개발

Time complexity: O(n)

1#include <bits/stdc++.h> 2using namespace std; 3 4vector<int> solution(vector<int> pg, vector<int> spd) { 5 vector<int> answer; 6 if(pg.size()<1) return answer; 7 int d = 1; 8 int daysReq = ceil((100 - pg[0])); 9 daysReq = (daysReq < spd[0]) ? 1 : ceil(daysReq/(double)(spd[0])); 10 11 for(int i=1; i<pg.size(); ++i) { 12 int s = spd[i]; 13 14 if(s*daysReq + pg[i] >= 100) { 15 ++d; 16 continue; 17 } else { 18 answer.push_back(d); 19 daysReq = ceil((100 - pg[i])); 20 daysReq = (daysReq < s) ? 1 : ceil(daysReq/(double)s); 21 22 d = 1; 23 } 24 25 } 26 answer.push_back(d); 27 return answer; 28}
  1. Extra test cases 아래의 테스트케이스를 통과한다면 구현에 문제는 없을겁니다.
  • [2, 2, 1, 2], [2, 2, 2, 98], [2, 2]
  • [99, 99, 99, 99, 99], [99, 99, 99, 99, 99], [5]
  • [1, 99], [99, 1], [2]
  • [3, 2, 4, 2, 1], [1, 1, 1, 1, 1], [1, 3, 1]
  • [20, 99, 93, 30, 55, 10], [5, 10, 1, 1, 30, 5], [3, 3]
  1. 나눗셈을 할 때 소숫점이 되는 경우를 생각해보세요.