문제

 

풀이 코드

function solution(x, n) {
  var answer = [x];
  for (let i = 0; i < n - 1; i++) {
    answer.push(answer[answer.length - 1] + x);
  }
  return answer;
}

 

풀이 과정

배열 초기 값을 입력들어온 x 하나만 넣고

배열의 push 함수를 사용하여 배열의 요소를 계속 추가해 주었다.

 

추가 하는 방식은, 배열의 마지막 요소를 기준으로 x 값을 계속 더해주면서 추가했다!

 

다른 풀이과정에서 fill 과 map 을 사용한 풀이도 있었지만, 내가 푼 방식으로도 충분하다는 생각이 들었다.

문제

 

풀이 코드

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 함수를 이용하여 구현 할 수 있는 문제였다.

 

오늘은 repeat 함수에 대하여 공부해 봐야겠다!

문제

 

풀이 코드

function solution(num) {
  return num % 2 == 0 ? 'Even' : 'Odd';
}

 

풀이 과정

삼항 연산자를 이용하여 한줄의 코드로 표현할 수 있다

문제

 

풀이 코드

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 상수의 값만 변경하면 바로 적용되도록 코드를 작성 하였다!

 

+ Recent posts