[알고리즘] 직사각형 별찍기

안치영·2022년 9월 27일
0

알고리즘

목록 보기
1/4

🔥 문제 설명

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

제한 조건

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

입력 5 3

출력

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

문제를 보자마자 2중 for문을 활용한 구구단이 생각나서 활용했다.

🔥 내가 작성한 코드

process.stdin.setEncoding("utf8");
process.stdin.on("data", (data) => {
  const n = data.split(" "); // 2중for문을 사용하기위해 배열로 만듬
  const a = Number(n[0]), // a에는 data의 0번째 인덱스
  b = Number(n[1]); // b에는 data의 1번째 인덱스
  for (let i = 0; i < b; i++) { // 입력값 a=5, b=3인데 b줄만큼 출력해야하기 때문
    let star = "";
    for (let j = 0; j < a; j++) { // a개만큼 b줄이니깐 2중for문으로 a개만큼 찍기
      star = star + "*"; // star라는 변수에 별개수 a개만큼b줄 찍어주기 
    }
    console.log(star);
  }
});

배열이 아닌 것에대한 반복을 해야할 때, split을 통해 배열로만들어서 for문을 사용하면 된다.

🔥 다른사람의 풀이

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

});

2중for문을 사용하지 않고 repeat를 활용해도 풀 수 있었다.

0개의 댓글