이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
n과 m은 각각 1000 이하인 자연수입니다.
문제를 풀지 못했다!
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => { // 입력받은 숫자를 'data에 받는다'
const n = data.split(" "); // data(입력받은 숫자)를 배열로 변경
const a = Number(n[0]), b = Number(n[1]); // a는 한줄에 대한 별의 갯수, b는 몇줄 출력
const row = '*'.repeat(a)
for(let i =0; i < b; i++){
console.log(row)
}
String.repeat()
: 문자열을 반복한 값을 반환하는 함수repeat을 사용하여 간단하게 풀수있는 문제였다.
아래 영상이 문제 풀이에 도움이 되었다
*
**
***
****
*****
for(let star = 1; star <= 5; star +=1) {
console.log('*'.repeat(star));
}
*****
****
***
**
*
for(let star = 5; star >= 1; star -= 1) {
console.log('*".repeat(star));
}
**********
********
******
****
**
for(let star = 10; star >= 2; star -= 2) {
console.log('*'.repeat(star));
}
*
**
****
********
****************
for(let star = 1; star <= 16; star *= 2) {
console.log('*'.repeat(star));
}
*****
****
***
**
*
for(let star = 5; star >= 1; star -= 1) {
console.log(' '.repeat(5 - star) + '*'.repeat(star));
}
*********
*******
*****
***
*
for(let star =9; star >= 1; star -= 2) {
console.log(' '.repeat((9 - star) / 2 )+ '*'.repeat(star));
}
나누기 2를 해야 0, 1, 2, 3, 4의 ' ' 빈 문자열만큼 띄어진다
*
**
***
****
*****
for(let star = 0; star < 5; star += 1) {
console.log('*' .repeat(star + 1))
}
보통 초깃값을 0으로 두기 때문에 star를 출력하면 별이 0부터 시작한다.
그래서 star + 1을 주면 * 1 값부터 시작한다.
또는 초깃값을 1로 시작한다.
*
***
*****
***
*
for(let i = 0; i <= 4; i++) {
console.log(' '.repeat(Math.abs(i-2)) + '*'.repeat(5-Math.abs(2*(i-2))));
}
이 문제도 결국 풀지 못해 풀이 중에 가장 이해가 잘 되는 풀이를 가져왔다.
Math.abs()
: 함수는 주어진 숫자의 절대값을 반환합니다.
x
가 양수이거나 0이라면x
를 리턴하고,x
가 음수라면 x
의 반대값, 즉 양수를 반환합니다.
Math.abs('-1'); // 1
Math.abs(-2); // 2
Math.abs(null); // 0
Math.abs(''); // 0
Math.abs([]); // 0
Math.abs([2]); // 2
Math.abs([1,2]); // NaN
Math.abs({}); // NaN
Math.abs('string'); // NaN
Math.abs(); // NaN