• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

안녕하세요~ 동영상 정말 쉽고 재미있게 잘 보고있습니다.

18.06.05 10:25 작성 조회수 71

0

안녕하세요 동영상 정말 잘 보고있습니다.
문제를 푸는도중 제가 맞는건지 잘하고있는건지 궁금해서 질문드립니다.
문제를 풀때는 최대한 생각을해보고 어떻게풀지 머리속에 그리고 코드를 작성하려고 노력중에있습니다.
하지만 처음이라그런지 시간이 너무 오래걸리는것도있고 해결못하는 문제도 많은거같습니다.
계속해서 노력하는 수밖에 없겠죠?
아래처럼 코드를 작성해보았는데 보완하거나 좀더 효율적인 방법이 있을까해서 질문드립니다.

var repeat2 = function(text, num) {
        var repTxt = "";
        if(num === 0) {
            return "";
        }else if(num < 0 || typeof num !== 'number' || !isFinite(num)) {
            throw new Error("RangeError");
        }
        num = Math.floor(num);
        for(var i = num; i >= 0; i--) {
            repTxt += text;
        }
        return repTxt;
    }
    var result2 = repeat2("hello", -1);
    var result3 = repeat2("hello", 0);
    var result4 = repeat2("hello", 3.5);
    var result5 = repeat2("hello", 2/1);
    console.log(result2);
    console.log(result3);
    console.log(result4);
    console.log(result5);

답변 1

답변을 작성해보세요.

0

배우지 않은 Error 객체까지 활용해서 코드를 잘 짜셨네요.

일반적으로 for 문으로 반복을 할 때는 0 부터 시작하는 경향이 있습니다.

추가로 문자열 += 보다는 배열에 원소를 추가하는 편이 더 좋지만, 그 부분은 고치지 않았습니다.

var repeat2 = function(text, num) {

var repTxt = "";

if (num < 0 || !isFinite(num)) {

throw new RangeError("Range must be bigger than 0");

}

var n = Math.floor(num);

for(var i = 0; i < n; i++) {

repTxt += text;

}

return repTxt;

};

console.log(repeat2("hello", 1));

console.log(repeat2("hello", 2));

console.log(repeat2("hello", 3.5));

console.log("zero: " + repeat2("hello", 0));

try {

console.log(repeat2("hello", -1));

} catch (e) {

if (e instanceof RangeError) {

console.log(e)

}

}

try {

console.log(repeat2("hello", "five"));

} catch (e) {

if (e instanceof RangeError) {

console.log(e)

}

}