Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- DFS
- 백준
- c++
- 부스트코스
- 시뮬레이션
- 브루트포스
- Gold 5
- 구현
- BFS
- Web
- Level 4
- 월간 코드 챌린지
- level 1
- DP
- 2020 KAKAO BLIND
- Level 3
- pass
- 2019 KAKAO BLIND
- SWEA
- Level 2
- 프로그래머스
- Gold 4
- 코드리뷰
- 백트래킹
- 코드 리뷰
- 2020 카카오 인턴십
- next_permutation
- 그리디
- 스택/큐
- 삼성 SW 역량 테스트
Archives
- Today
- Total
Min:D's Devlog
[프로그래머스][스택/큐][C++] 기능개발 본문
문제
프로그래머스 스택/큐 - 기능개발 (Level 2)
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는
programmers.co.kr
문제 풀이
접근 방식
기능 개발 시, 뒤에 있는 기능이 더 먼저 개발되면 앞에 있는 기능이 배포될 때 함께 배포될 때,
각 배포마다 몇 개의 기능이 배포되는 지를 구하는 문제이다.
우선, 각 기능들마다 작업 진도 및 개발 속도가 다르기 때문에
이를 고려하여 개발을 완료하기까지 걸리는 일수를 구해 days 벡터에 저장해주었다.
그 후, 첫 번째 기능의 남은 일수를 max로 설정한 후,
max보다 남은 일수가 적은 기능인 경우에는 count에 1을 더하고,
그렇지 않은 경우, max 값을 현재 기능의 남은 일수로 변경하고
answer에 count 값을 저장하는 방식으로
답을 구해주었다.
풀이 코드 - C++
#include <vector>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
int n = progresses.size();
vector<int> days(n);
for(int i = 0; i < n; i++) {
days[i] = (100 - progresses[i]) / speeds[i];
if((100 - progresses[i]) % speeds[i] != 0)
days[i]++;
}
vector<int> answer;
int count = 1;
int max = days[0];
for(int i = 1; i < n; i++) {
if(max >= days[i])
count++;
else{
max = days[i];
answer.push_back(count);
count = 1;
}
}
answer.push_back(count);
return answer;
}
실행 결과

'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][해시][C++] 완주하지 못한 선수 (0) | 2020.11.30 |
---|---|
[프로그래머스][월간 코드 챌린지 시즌 1][C++] 쿼드압축 후 개수 세기 (0) | 2020.11.19 |
[프로그래머스][월간 코드 챌린지 시즌 1][C++] 3진법 뒤집기 (0) | 2020.11.16 |
[프로그래머스][힙][C++] 더 맵게 (0) | 2020.10.28 |
[프로그래머스][해시][C++] 베스트앨범 (0) | 2020.10.26 |