알고리즘 문제
배열만들기
3jun
2018. 10. 2. 14:21
나의 풀이
또 다른 풀이
먼저 두 가지로 나눠서 생각해보자.
start 보다 end가 클 경우, 그리고 start 보다 end가 작을경우
먼저, start보다 end가 클 경우, 즉 값이 점점 증가할 경우에는
var idx = 0; for (var i = start; i < end; i += step) { arr[idx] = i; idx++; }
이렇게 작성할 수 있고,
반대로 start보다 end가 작을 경우, 즉 값이 점점 감소할 경우에는
var idx = 0; for (var i = start; i > end; i += step) { arr[idx] = i; idx++; }
이렇게 작성하면 된다.
이 코드를 if문으로 합쳐서 완성하면 아래와 같다.
function range(start, end, step) { var arr = []; var idx = 0; if (start < end) { for (var i = start; i < end; i += step) { arr[idx] = i; idx++; } } else { for (var i = start; i > end; i += step) { arr[idx] = i; idx++; } } return arr; } // 테스트 코드 console.log(range(1, 10, 1)); console.log(range(-1, 10, 3)); console.log(range(10, -10, -4));
[1, 2, 3, 4, 5, 6, 7, 8, 9] [-1, 2, 5, 8] [10, 6, 2, -2, -6]