알고리즘/lv 1

JS 알고리즘 Lv.1 직사각형 별찍기

오류확인자 2023. 6. 16. 11:59

[level 1] 직사각형 별찍기 

문제 설명

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


제한 조건

  • n과 m은 각각 1000 이하인 자연수입니다.

예시

입력

5 3

출력

 
*****
*****
*****

내가 푼 방식

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

처음 반복문을 생각해서 반복문 조건을 해봤지만, 범위 설정과 입력을 잘못한것 같다. 나는 리핏으로 복사를 하려고 했지만, 이게 아니였던 것 같다. 다른 풀이를 확인 해봐야겠다. 

정답을 보니 내가 생각했던 것과 비슷했다. 좀 더 고민을 해봤다면 풀었을 것 같다. 

이 풀이 말고 다른 풀이도 있다 거기에서는 나와 같이 repeat을 사용했다.

 

정답 1

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);

  }
});

정답 2

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

});