Algorithm

[프로그래머스] 직사각형 별찍기

채햔 2023. 2. 22. 01:34

가로가 n, 세로가 m인 직사각형 형태의 별을 출력하는 문제이다.

repeat()을 사용하면 간단하게 해결할 수 있다.

"반복할 문자열".repeat(반복횟수) 형태로 작성하면 된다!

function solution(n, m) {
  return ("*".repeat(n) + "\n").repeat(m);
}

이렇게 제출하였는데 오류가 발생하였다.

생각해보니 기본으로 주어지는 코드가 아래와 같았고 나는 오류인줄 알고, function solution으로 변경하여 풀었다.

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

 

 

process.stdin이 fs(file system)모듈을 이용하여 표준입력(stdin) 파일을 동기적으로 불러오는 방법이라고 한다.

어쨌든 입력값을 가져온 다는 뜻!

data에 (n m) 값이 모두 담겨있다.

 

따라서 split(" ")으로 앞의 것은 a에, 뒤의 것은 b에 저장하여 사용한다.

가로는 a, 세로는 b인 직사각형을 만들면된다.

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

가장 처음에 작성한 코드에서 n->a, m->b로 변경하면 완성!

return 아니고 console.log로 결과값을 바로 출력해주면 된다.

 

m은 단 한번도 사용되지 않는데 문제가 잘못 작성된 것이 아닌지 의문이 든다!