[코테][JS] for문 대신 repeat()

star_delight.yeji·2024년 1월 23일
post-thumbnail

직사각형으로 별찍기 문제는 for문을 통해 코드를 작성할 수 있다. 하지만 for문을 2번 반복하는 과정이 번거로울 수 있다는 생각이 들었다. 2번 반복하지 않고 한번에 코드를 작성할 수 있는 방법이 있지 않을까라는 생각으로 메서드를 공부하다 repeat()을 알게 되었다.
직사각형 별찍기 - 프로그래머스

정확히는 repeat()을 다시 복습하게 되었다.
문자 반복 출력하기 문제를 풀 때 repeat()을 사용한 경험이 있었기 때문이다.

function solution(my_string, n) {
    let answer = ''
    for (let i = 0; i < my_string.length; i++) {
        answer += my_string[i].repeat(n)
    }
    return answer;
}

repeat()은 뭘까?

그럼 repeat()은 어떤 메서드일까?
MDN에 따르면 repeat()은 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환하는 메서드이다.
일정 횟수만큼 반복하는 작업이 반복문인 for문과 repeat()의 공통점입니다.
문자열 곱하기 문제를 보면 for문과 repeat()을 사용한 경우입니다. 같은 반복하는 작업을 하는 코드지만 코드 줄이 줄어든 것을 알 수 있습니다.

function solution(my_string, k) {
    var answer = '';
    for(let i = 0 ; i < k ; i++){
        answer += my_string
    }
    return answer;
}
function solution(my_string, k) {
    var answer = '';
    
    return my_string.repeat(k);
}

문제에 적용하기

문자열 곱하기 문제처럼 직사각형 별찍기 문제에도 2개의 코드를 비교해보았다.

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    for(let i = 0 ; i < b ; i++){
         let star = "";
        
         for(let j = 0; j < a; j++){
             star += "*";
         }
        
        console.log(star);
    }
});
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    for(let i = 0 ; i < b ; i++){
        console.log('*'.repeat(a));
    }
});

이 문제에서도 문자열 곱하기 문제와 동일하게 for문을 사용했을 때보다 repeat()을 사용한 경우 코드 줄이 줄어드는 것을 확인할 수 있다.


언제 repeat()을 사용할까?

위에 코드처럼 간단한 반복문일 경우에는 간결하게 코드를 작성할 수 있는 repeat()을 사용하는 것이 코드의 가독성이 올라간다. 하지만 다양한 조건으로 인해 복잡한 반복 로직을 가진 문제에서는 for문을 통해 조건을 적용하는 것이 코드를 작성하기에 용이하다고 생각된다.
즉, 단순한 문자열 반복에는 repeat()을 사용하고, 복잡한 반복 로직과 다양한 조건이 있는 상황에서는 for문을 사용하는 것이 적합하다.

0개의 댓글