처음 도전해보는 자바스크립트 코딩테스트,
생소한 형식의 문제에 당황했지만 열심히 적응중이다.
목표는 할 수 있는 최대한 단순한 코드를 만들기,
목표를 위해 다양한 방법을 사용해보기 🧑🏻💻
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
n과 m은 각각 1000 이하인 자연수입니다.
5 3
*****
*****
*****
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.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
for (let i = 0; i < b; i++) {
let row = "";
for (let j = 0; i < a; i++) {
row += '*';
};
};
});
중첩된 반복문. 내부 반복문은 가로줄을 구성하고, 외부 반복문은 가로줄을 m번 복사한다. 반복문이 두번 실행될 필요가 있을까?
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
for (let i = 0; i < b; i++) {
console.log("*".padEnd(a, "*"));
};
});
문자열을 원하는 길이만큼 특정 문자로 채워주는 padEnd 메소드를 사용하여 가로줄을 구성
padStart를 사용해도 무방하다
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
let c = b
while (c) {
console.log("*".padEnd(a, "*"));
c--;
};
});
for 대신 while을 사용하여 반복문의 조건을 간결하게 하고자 했다. 대신 b 값을 Mutable variable에 재할당하는 것이 비효율적이다.
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)
};
});
padEnd, padStart 대신 repeat 메소드로 가로줄을 구성한 방법