본문 바로가기

개발/CodeWars 문제 회고

[javascript] Generate range of integers

반응형

아래 문제는 전형적인 자바스크립트의 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초 컷인데.. 아무래도 자바스크립트에 익숙치 않다보니.. 위 문제는 제한 시간내에 풀진 못하였다.

 

 

이 문제에서의 중요 개념

  1. 자바스크립트로 for-loop 사용방법
  2. 자바스크립트 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

stackoverflow.com/questions/3895478/does-javascript-have-a-method-like-range-to-generate-a-range-within-the-supp

 

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