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
- 코드 리뷰
- SWEA
- 삼성 SW 역량 테스트
- 백준
- next_permutation
- Gold 5
- 백트래킹
- 시뮬레이션
- 코드리뷰
- 프로그래머스
- 2020 KAKAO BLIND
- 스택/큐
- BFS
- DFS
- Web
- Level 4
- 구현
- Gold 4
- pass
- Level 2
- 월간 코드 챌린지
- 2020 카카오 인턴십
- 2019 KAKAO BLIND
- 브루트포스
- c++
- level 1
- Level 3
- 부스트코스
- DP
- 그리디
Archives
- Today
- Total
Min:D's Devlog
[프로그래머스][스택/큐][C++] 기능개발 본문
문제
프로그래머스 스택/큐 - 기능개발 (Level 2)
문제 풀이
접근 방식
기능 개발 시, 뒤에 있는 기능이 더 먼저 개발되면 앞에 있는 기능이 배포될 때 함께 배포될 때,
각 배포마다 몇 개의 기능이 배포되는 지를 구하는 문제이다.
우선, 각 기능들마다 작업 진도 및 개발 속도가 다르기 때문에
이를 고려하여 개발을 완료하기까지 걸리는 일수를 구해 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 |
Comments