[매일코딩-프로그래머스] 직사각형 별찍기 02

2022. 1. 12. 11:02WEB Dev/CordingTEST

728x90

어제 풀던 문제를 마저 풀어본다. 


 

[문제] 직사각형 별찍기

 

n과 m이라는 정수가 두 개 주어진다. 그리고 * (애스터리스크, 별) 문자를 이용해 n x m 인 직사각형 형태를 출력해주면 된다.

 

 

[풀이]

 

가만 보니 내가 반복문으로 출력하는 것은 그냥 한 줄로 쭉 나열되고 있었다. (계속 줄바꿈이 일어남)

그래서 '별찍기' 키워드로 찾아보니 .repeat라는 메소드를 사용하고 있었다. 

 

 

 

String.prototype.repeat() - JavaScript | MDN

repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환합니다.

developer.mozilla.org

 

 

이런 메소드도 있었구만...

메소드는 외워도 외워도 까먹고 외워도 외워도 새로운게 나오는 것 같다.

역시 문제가 닥치면 찾아봐야겠지..

 

 

이제 repeat 메소드 안에 반복갯수를 넣어주면 되니까 반복문을 중첩하지 않아도 된다.

 

생성된 변수 a가 가로 길이고, b가 세로 길이이다.

그럼 *을 a만큼 반복해서 찍은 한 줄을 b만큼 다시 반복해주면 되니까

for문을 이용해서 간단하게 만들 수 있다.

 

 

For 사용

 

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

});

 

통과!

 

 

그런데 맨날 기본 반복문만 써서 ... 다른 반복문도 사용해봐야겠다.

 

 

While 사용

 

while 쓸 때 아래에 ++ 써주는 것을 매번 깜빡하고 부하를 일으킨다.. 😥ㅋㅋㅋ

 

 

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);

    let i=0; 
    while (i<b){ 
        console.log('*'.repeat(a))
        i++;    
    }

});

 

 

 

 

 


728x90