728x90
반응형
문제 링크
조건
- 진도가 100%이상 일 때 서비스에 반영할 수 있다.
- 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포된다.
나의 정답 코드
function solution(progresses, speeds) {
// 각 배포마다 몇 개의 기능이 배포되는지
let answer = [];
let days = [];
let memo = 1;
for (let i = 0; i < progresses.length; i++) {
let day = Math.ceil((100 - progresses[i]) / speeds[i]);
days.push(day);
}
for (let j = 0; j < days.length; j++) {
if (memo < days[j]) {
answer.push(1);
memo = days[j];
} else answer[answer.length - 1] += 1;
}
return answer;
}
다시 풀었을 때 맞아서 기분이 좋았다! ㅎㅎ
다른 분 정답 코드
function solution(progresses, speeds) {
let answer = [0];
let days = progresses.map((progress, index) => Math.ceil((100 - progress) / speeds[index]));
let maxDay = days[0];
for (let i = 0, j = 0; i < days.length; i++) {
if (days[i] <= maxDay) answer[j] += 1;
else {
maxDay = days[i];
// 전위증가로 구현한 게 포인트!
answer[++j] = 1;
}
}
return answer;
}
전위 증가로 코드를 구현한 것을 기억하고 싶어서 기록했다. 요 방법 아주 기억해둘만 하다.
전위 연산자는 연산을 먼저 수행한 뒤에 변수를 할당한다.
내 코드와 다르게 for문을 쓰지 않고 map으로 사용했다. 이게 더 좋다! 효율성 부분에서
반응형
질문이나 잘못된 점은 댓글로 남겨주세요 :)💖
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/JS] Lv2. 배달 (0) | 2023.03.31 |
---|---|
[프로그래머스] Lv2. 행렬의 곱셈 (0) | 2023.03.29 |
[프로그래머스] Lv2. 땅따먹기 (0) | 2023.03.28 |
[프로그래머스] Lv2. 구명보트 (2) | 2023.03.22 |
[프로그래머스] Lv2. 해시 - 위장 (0) | 2023.02.07 |
댓글