TIL

TIL 20241008 (직사각형 별찍기 - 알고리즘)

j-coder 2024. 10. 8. 22:51

직사각형 별찍기

 

 

 

코드

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

  answer = "";

  for (let i = 0; i < b; i++) {

    for (let j = 0; j < a; j++) answer += "*";

    answer += "\n";
  }

  console.log(answer);
});

 

 

풀이

두 수를 입력받아 이중 for문을 이용해 별 직사각형을 만드는 코드이다.

 

process.stdin.setEncoding("utf8");

입력 데이터를 문자열로 처리하기 위해 쓰는 입력 인코딩 설정

 

process.stdin.on("data", (data) => {

데이터가 입력될 때마다 실행되는 이벤트 리스너이다.

데이터가 data 매개변수로 전달된다.

 

const n = data.split(" ");
const a = Number(n[0]),
      b = Number(n[1]);

data.split을 이용해 배열 n을 만든다. (공백으로)

n[0]은 가로 별의 개수 a

n[1]는 세로 별의 개수 b를 나타낸다.

Number() 함수를 이용해 숫자로 바꾸어준다.

 

answer = "";

answer 변수를 빈 문자열로 저장한다.

최종적 으로 출력할 문자열을 저장할때 쓸것이다.

 

for (let i = 0; i < b; i++) {
    for (let j = 0; j < a; j++) answer += "*";
    answer += "\n";
}

첫번째 for문은 b만큼 반복하고 두번째 for문은 a만큼 반복하고 문자열 *를 추가한다.

두번째 for문 까지 돌면 answer에 \n (줄바꿈)을 추가하여 다음 줄로 이동하게 한다.

 

console.log(answer);

이중 for문의 루프가 최종적으로 다 돌고 결과를 출력하는 코드다.

 

b는 줄의 별수를 나타내고 a는 열의 별수을 나타내는 변수다.

 

이중 for문과 줄바꿈을 이용해 별로 직사각형 코드를 완성했다.