process.stdin.setEncoding('utf8');
process.stdin.on('data', (data) => {
const n = data.split(' ');
const a = Number(n[0]),
b = Number(n[1]);
writeStar(a, b);
});
function writeStar(a, b) {
let starCount = '';
for (let i = 0; i < a; i++) {
starCount += '*';
}
for (let i = 0; i < b; i++) {
console.log(starCount);
}
}
풀이 과정
starCount 라는 변수에 for 반복문을 사용하여 * 을 a 입력만큼 저장 하였고,
b 만큼 starCount 를 출력했다.
풀면서도 너무 비효율적인거 같아 고민하다가 다른사람의 풀이를 보았다.
다른사람의 풀이
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
console.log((('*').repeat(a)+`\n`).repeat(b))
});
기초가 중요한 이유가 여기있다
for 를 남발하지 않고도 간략하게 repeat 함수를 이용하여 구현 할 수 있는 문제였다.
function solution(numbers) {
var answer = -1;
const MAX_NUM = 9;
let sum = 0;
for (let i = 0 ; i <= MAX_NUM; i++) {
sum += i;
}
let numbers_sum = numbers.reduce((total, current) => total + current, 0);
answer = sum - numbers_sum;
return answer;
}
풀이 과정
1. 문제에서 요구사항을 보고 reduce 함수를 사용 하면 될 것 같았다. reduce 함수로 들어온 배열의 모든값을 더하고,
0 ~ 9 까지의 합에서 해당 값을 빼면 된다고 생각했다!
너무 간단한 문제지만 고차 함수인 reduce 를 모르면 코드가 훨씬 길어졌을 것이다.
개발할때는 항상 모든 상황에 대한 경우의 수를 생각해야 한다고 했다. 간단하게 0~9 까지의 더한 값을 바로 사용하면 코드가 더 간결해 지겠지만...
숫자의 범위가 9 까지가 아니고, 10 , 100, 4000.. 등등 범위값이 달라지면 해당 코드를 다시 작성해야 하는 것 이 아닌, MAX_NUM 상수의 값만 변경하면 바로 적용되도록 코드를 작성 하였다!