[프로그래머스] 직사각형 별찍기 - Javascript

devmin24·2021년 7월 30일
0

⏳ 도전! 알고리즘

목록 보기
19/32
post-thumbnail
post-custom-banner

문제 링크

문제

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.

예시

입력출력
5 3* * * * *
* * * * *
* * * * *

풀이

친절하게도 5 3을 입력 시 n = [5,3] 배열로 변경해주고 a = n[0], b=n[1] a, b 변수까지 생성해준다.
이제 이것들을 이용해서 for문을 돌려 문제를 풀기만 하면 된다.
5개의 별로 이루어진 줄을 3개 출력하면 된다.

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" "); // " "을 기준으로 잘라 배열로 만들어준다.
    const a = Number(n[0]), b = Number(n[1]); // a = 5이고 b = 3이다.
    
    for(let i=0; i<b; i++){ // 먼저 3줄 반복한다.
        let str = ""; // 문자열이 담기는 변수를 하나 만든다
        for(let j=0; j<a; j++){ // 한 줄에서 *을 5번 출력한다.
            str = str + "*" // 아까 만든 변수에 *을 하나씩 추가한다.
        }
        console.log(str);
    }
    
});

이렇게 풀어도 되지만, 조금 더 익히고자 메서드를 사용해 푸는 방법을 참고해보았다.

str.repeat(count);
repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다. 더 알아보기

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    const star = '*'.repeat(a); // *을 a번 반복한다.
    for(var i = 0; i < b; i++) { // 5개의 별로 이루어진 값을 b번 반복한다.
        console.log(star);    
    }    
});

Takeaway

for문을 이용하여 쉽게 풀고 넘어갈 수 있는 문제였지만, 메서드를 사용하여 풀 수 있는 새로운 방법을 배웠다. 역시 메서드는 중요하며 편리하게 사용할 수 있어서 좋다! 오늘도 하나의 메서드를 배웠다! 알고리즘은 정해진 답이 없다. 여러 가지의 해답이 나올 수 있는데, 해답마다의 배우는 점이 각각 다르다. 이 매력에 푸는 재미가 있다 :)

profile
꾸준함, 열정 한 가득 챙겨 끝없는 목표를 향해 달려가는 개발자👩‍💻
post-custom-banner

0개의 댓글