fizzbuzz.js (7kyu 98)

Codewars 알고리즘 풀이


Problem

  • Return an array containing the numbers from 1 to N, where N is the parametered value.
    • 1부터 N까지의 숫자가 포함된 배열을 반환한다.
  • Replace certain values however if any of the following conditions are met:
    • 하지만 다음 조건 중 하나가 충족되는 경우, 특정 값으로 대체한다.
  • If the value is a multiple of 3: use the value ‘Fizz’ instead.
    • 값이 3의 배수라면, 값을 ‘Fizz’로 대체한다.
  • If the value is a multiple of 5: use the value ‘Fizz’ instead.
    • 값이 5의 배수라면, 값을 ‘Buzz’로 대체한다.
  • If the value is a multiple of 3 & 5: use the value ‘FizzBuzz’ instead.
    • 값이 3과 5의 배수라면, 값을 ‘FizzBuzz’로 대체한다.


Solution 01

function fizzbuzz(n) {
  let result = [];
  
  for (let i = 1; i <= n; i++) {
    let temp = '';
    
    if (i % 3 === 0) temp += 'Fizz';
    if (i % 5 === 0) temp += 'Buzz';
    
    result.push(temp.length === 0 ? i : temp);
  }
  return result;
}

fizzbuzz(5);   // [1, 2, 'Fizz', 4, 'Buzz']
fizzbuzz(15);  // [1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'FizzBuzz']

push(): 배열의 끝에 새 element를 추가하고, 새로운 길이를 반환한다.


Solution 02

function fizzbuzz(n) {
  let result = [];
  
  for (let i = 1; i <= n; i++) {
    let temp = '';
    
    if (i % 3 === 0) temp += 'Fizz';
    if (i % 5 === 0) temp += 'Buzz';
    
    result.push(temp || i);
  }
  return result;
}

fizzbuzz(5);   // [1, 2, 'Fizz', 4, 'Buzz']
fizzbuzz(15);  // [1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'FizzBuzz']