이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
이중 for문을 피하고 싶었는데 순회하는 내내 조건문을 확인해야 하니 오히려 이 풀이가 성능이 더 좋지 않을 듯 하다.
1. 총 별의 개수는 a와 b를 곱한 값이므로 a*b
만큼 반복문을 돌면서 빈 문자열 stars에 *
을 붙여주는데,
2. 한 줄의 개수는 a와 같으므로 a를 찍고나서 줄을 바꾸기 위해 개행문자 \n
을 추가해준다.
=> i%a
이 0일 때(i===a
, i===a*2
, i===a*3
...)
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
let stars = ""
for (let i = 1; i <= a * b; i++) {
if (i % a === 0) stars += ("*" + '\n');
else stars += "*";
}
console.log(stars);
});
repeat()
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);
}
});
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
const star = `${'*'.repeat(a)}\n`;
console.log(star.repeat(b));
});
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
var a = Number(n[0]), b = Number(n[1]),
stars = '';
while (a-- > 0)
stars += '*';
while (b-- > 0)
console.log(stars);
});
문자열 반복 함수
repeat(count)
repeat 메서드는 대상 문자열을 인수로 전달받은 정수만큼 반복해 연결한 새로운 문자열을 반환한다. 이때 인수는 0과 +Infinity 사이의 정수를 전달해야 한다.
인수로 전달받은 정수가 0이면 빈 문자열을 반환하고, 음수이면 RangeError를 발생시킨다. 인수를 생략하면 기본값 0이 설정된다.