0%

[프로그래머스] 기능 개발

프로그래머스 - 연습 문제

풀이과정

  • progresses[0]이 100 이상일 때, 다음 원소가 100 이상일 경우 count 증감
  • count는 array에 push하고, count만큼 배열을 잘라버린다
  • 이렇게 배열에 원소가 없을 때까지 반복한다
  • count가 0 이상일 때만 array에 push해야 하는데 나는 그냥 필터로 함…

Code (Javascript)

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
function solution(progresses, speeds) {
var array = [];
while (progresses.length > 0) {
var count = 0;
// 개발
if (progresses[0] <= 100) {
for (var i = 0; i < progresses.length; i++) {
progresses[i] = progresses[i] + speeds[i];
}
}

// 배포
if (progresses[0] >= 100) {
for (var progress of progresses) {
if (progress >= 100) {
count += 1;
} else {
break;
}
}
}
progresses.splice(0, count);
speeds.splice(0, count);
array.push(count);
}
var answer = array.filter(el => el > 0);
return answer;
}

다른 사람의 코드

progresses[0] >= 100일 때 배열 첫 번째 요소 제거 및 count 증감, 그리고 count가 0 이상일 때만 정답 배열에 삽입했다. 깔끔하다…

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
function solution(progresses, speeds) {
var answer = [];

while (speeds.length > 0) {
// 개발
for (let i in speeds) {
if (progresses[i] < 100) {
progresses[i] += speeds[i];
}
}

// 배포
let deploy_count = 0;
while (progresses[0] >= 100) {
progresses.shift();
speeds.shift();
deploy_count++;
}
if (deploy_count > 0) {
answer.push(deploy_count);
}
}

return answer;
}