아래 문제는 전형적인 자바스크립트의 for loop에 대한 문제이다. 코드는 아래와 같이 작성 가능하다.
www.codewars.com/kata/55eca815d0d20962e1000106/train/javascript
Codewars: Achieve mastery through challenge
Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.
www.codewars.com
function generateRange(min, max, step) {
let temp = []
for (let i = min; i <= max; i += step) {
temp.push(i);
}
return temp
}
test("genrateRange", () => {
expect(generateRange(2, 10, 2)).toStrictEqual([2, 4, 6, 8, 10])
})
파이썬으로 오랫동안 개발하다보니, 위와 같이 예전의 C 스타일의 for-loop 작성하는 법을 거의 잊어버렸었는데, 이 문제를 통해서 다시 기억을 더듬을 수 있었다.
function generateRange(min, max, step) {
return Array.from({ length: 1 + (max - min) / step }, (_, i) => min + i * step);
}
Array.from 을 사용해서 위와 같이 도 풀 수 있다.
FYI, 파이썬으로 풀면 위 문제는 아래와 같이 풀 수 있다.
import unittest
def generate_range(min_, max_, step_):
return list(range(min_, max_ + 1, step_))
class TestGenerateRange(unittest.TestCase):
def test_generate_range(self):
self.assertEqual(generate_range(2, 10, 2), [2, 4, 6, 8, 10])
파이썬으로 풀면, 거의.. 30초 컷인데.. 아무래도 자바스크립트에 익숙치 않다보니.. 위 문제는 제한 시간내에 풀진 못하였다.
이 문제에서의 중요 개념
- 자바스크립트로 for-loop 사용방법
- 자바스크립트 Array.from
참고
developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/from
Array.from() - JavaScript | MDN
Array.from() 메서드는 유사 배열 객체(array-like object)나반복 가능한 객체(iterable object)를 얕게 복사해새로운Array 객체를 만듭니다. The source for this interactive example is stored in a GitHub repository. If you'd like t
developer.mozilla.org
Does JavaScript have a method like "range()" to generate a range within the supplied bounds?
In PHP, you can do... range(1, 3); // Array(1, 2, 3) range("A", "C"); // Array("A", "B", "C") That is, there is a function that lets you get a range of numbers or characters by passing the upper ...
stackoverflow.com
'개발 > CodeWars 문제 회고' 카테고리의 다른 글
[python ] 6kyu Unary function chainer (0) | 2021.01.24 |
---|---|
Buying a Car (0) | 2021.01.02 |
Regex Failure - Bug Fixing #2 (0) | 2020.12.20 |