티스토리 뷰
title: "기능개발"
category: 프로그래머스[Level-2]
tags: [C++, JavaScript, 프로그래머스]
date: "2021-01-21"
문제 링크
C++
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
reverse(progresses.begin(), progresses.end()); // for. 스택으로 이용
reverse(speeds.begin(), speeds.end()); // for. 스택으로 이용
while(!progresses.empty()){
int count = 0; // 날짜 수
int totalSize = progresses.size(); // 이전 크기값
while(progresses.back()<100){
progresses.back() += speeds.back();
count++; // 지난 날짜 수 증가
}
progresses.pop_back();
speeds.pop_back();
for(int i=0; i<progresses.size(); i++){
progresses[i] += speeds[i]*count; // 모든 진행도 갱신
}
while(!progresses.empty()){
if(progresses.back()<100) break;
progresses.pop_back();
speeds.pop_back();
}
answer.push_back(totalSize-progresses.size()); // 배포한 횟수
}
return answer;
}
JavaScript
function solution(progresses, speeds) {
var answer = [];
progresses.reverse(); // for. 스택 사용
speeds.reverse(); // for. 스택 사용
while (progresses.length > 0) {
const day = Math.ceil(
(100 - progresses[progresses.length - 1]) / speeds[progresses.length - 1]
); // 현재 날짜
const totalProgress = progresses.length; // 이전 작업 수
progresses.pop();
speeds.pop();
answer.push(1);
for (let i = 0; i < progresses.length; i++) {
progresses[i] += speeds[i] * day;
}
while (progresses.length > 0) {
if (progresses[progresses.length - 1] < 100) break;
progresses.pop();
speeds.pop();
answer[answer.length - 1]++;
}
}
return answer;
}
728x90
반응형
'Programmers Solutions > Level-2' 카테고리의 다른 글
[프로그래머스] 스킬트리 (0) | 2021.01.31 |
---|---|
[프로그래머스] 다리를 지나는 트럭 (0) | 2021.01.31 |
[프로그래머스] 숫자의 표현 (0) | 2021.01.31 |
[프로그래머스] 이진 변환 반복하기 (0) | 2021.01.31 |
[프로그래머스] 최댓값과 최솟값 (0) | 2021.01.31 |
댓글