카테고리 없음

직사각형 별찍기

juni_shin 2024. 9. 21. 22:50
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);

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

});

 

1. process.stdin.setEncoding('utf8');

  • setEncoding('utf8'): 표준 입력(사용자가 입력하는 값)이 UTF-8 인코딩으로 처리되도록 설정합니다. UTF-8은 일반적으로 텍스트를 처리할 때 사용하는 인코딩 방식이에요. 이 부분은 사용자가 입력하는 값(예: 5 3)을 문자열로 처리하기 위한 설정이에요.

2. process.stdin.on('data', data => { ... })

  • process.stdin.on('data', ...): 사용자가 데이터를 입력하고 Enter를 치면, 그 데이터를 받아서 처리할 수 있는 이벤트 리스너입니다. 즉, 사용자가 값을 입력하면 그 값이 data로 전달되고, 그 안에 있는 코드가 실행됩니다.
  • data: 사용자가 입력한 값을 담고 있는 변수입니다. 예를 들어 사용자가 5 3을 입력하면, data는 "5 3"이라는 문자열이 됩니다.
  • Node.js에서 표준 입력을 처리하기 위한 방법이에요. 즉, 터미널(콘솔)에서 입력을 받아서 그 데이터를 코드로 처리할 때 사용되죠. 하지만, 웹 브라우저나 다른 환경에서는 process 객체를 사용할 필요가 없어요. 만약 콘솔이 아닌 브라우저에서 실행하는 경우라면, prompt() 같은 함수를 사용해서 입력을 받을 수 있습니다.

3. const n = data.split(" ");

  • data.split(" "): 입력받은 문자열을 공백을 기준으로 나누어 배열로 만듭니다. 예를 들어, data가 "5 3"일 경우, n은 ["5", "3"]라는 배열이 됩니다.
    • "5"는 n[0]에, "3"은 n[1]에 저장됩니다.

4. const a = Number(n[0]), b = Number(n[1]);

  • Number(n[0]): 문자열 "5"를 숫자 5로 변환합니다. a는 가로에 출력할 별의 개수, 즉 5가 됩니다.
  • Number(n[1]): 문자열 "3"을 숫자 3으로 변환합니다. b는 세로에 출력할 줄의 수, 즉 3이 됩니다.

5. for(i = 0; i < b; i++) { ... }

  • for문: 별을 b번 출력하기 위해 사용하는 반복문입니다.
    • i = 0; i < b; i++: i는 0부터 시작해서 b보다 작은 동안 반복됩니다. 즉, b가 3이면, 이 반복문은 3번 실행됩니다.
    • 중요한 점: 이 코드에서 i 앞에 let이나 var를 써서 변수를 선언해야 해요. 지금은 i가 선언되지 않았기 때문에 오류가 날 수 있습니다. 올바르게 수정하면 for (let i = 0; i < b; i++)가 되어야 해요.

6. console.log('*'.repeat(a));

  • '*'.repeat(a): 별(*)을 a번 반복해서 출력하는 문자열을 만듭니다. 예를 들어, a가 5이면 "*****"라는 문자열이 만들어집니다.
  • console.log(): 한 줄을 출력하는 함수입니다. '*'.repeat(a)로 만들어진 별들을 한 줄에 출력하고, 줄을 바꿉니다.
    • a = 5, b = 3이면, "*****"가 3줄 출력됩니다.