일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 디자인 패턴
- dotenv
- Secret
- github
- dfs
- package
- DP
- git
- 캡슐화
- 메모이제이션
- 동적계획법
- mock
- bfs
- 상속
- 객체지향
- 클라우드
- MariaDB
- azure
- 다형성
- 추상화
- 서브셋폰트
- netlify
- Java
- PostgreSQL
- CSS
- Solid
- GOF
- process.env
- AOP
- npm
Archives
- Today
- Total
이것저것 해보기🌼
[프로그래머스] 기능개발 본문
유형 : 구현, 스택
문제
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.
또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.
먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.
제한사항
- 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.
- 작업 진도는 100 미만의 자연수입니다.
- 작업 속도는 100 이하의 자연수입니다.
- 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다.
입출력 예
풀이
이문제는 대부분 2번과 11번 테스트케이스에서 틀리는데, 예외처리를 잘 해주어야한다.
작업에 더 걸리는 날 수를 계산할때,
작업속도로 나누고 짜투리 진행률이 남으면 1을 더해주어야 한다.
나는 처음에 나머지가 있는 경우 바로 day 에 1을 더해버렸더니 실패했다.
그 다음에 day / speed[i] 연산이 있으므로, 그전에 day 에 변화가 생기면 안된다.
나머지 일수가 하루 더 필요한경우에는 별도 변수에 그정보를 저장하고 마지막에 day에 더해주었다.
1
2
3
4
|
int a = 0;
if(day%speeds[i]!=0)
a=1;
day = day/speeds[i]+a;
|
cs |
정말 예외처리의 중요성을 느낀다.
전체코드
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 31 32 33 34 35 | #include <string> #include <vector> #include <iostream> using namespace std; vector<int> solution(vector<int> progresses, vector<int> speeds) { vector<int> answer; int preday = -1; int cnt = 1; for(int i=0; i<progresses.size(); i++){ int day = 100 - progresses[i]; int a = 0; if(day%speeds[i]!=0) a=1; day = day/speeds[i]+a; if(i == 0){ preday = day; } else if(day <= preday){ cnt++; } else{ answer.push_back(cnt); cnt = 1; preday = day; } } answer.push_back(cnt); return answer; } | cs |
'코딩테스트' 카테고리의 다른 글
[구름] 코딩테스트 대비 JAVA BufferedReader 사용법 (0) | 2021.07.02 |
---|---|
[프로그래머스] 타겟 넘버 (0) | 2021.07.02 |
[프로그래머스] 더 맵게 (0) | 2021.06.29 |
[프로그래머스] 짝지어 제거하기 (0) | 2021.06.29 |
[프로그래머스] 문자열 압축 (0) | 2021.06.29 |