본문으로 건너뛰기

28702. FizzBuzz

문제 풀이

js
const testcases = [
  {
    input: `Fizz
Buzz
11`,
    output: `Fizz`,
  },
  {
    input: `980803
980804
FizzBuzz`,
    output: `980806`,
  },
  {
    input: `12
Fizz
Buzz`,
    output: `FizzBuzz`,
  },
  {
    input: `17
Fizz
19`,
    output: `Buzz`,
  },
];

function solution(input) {
  let result = 0;
  const splitedInput = input.trim().split('\n');

  splitedInput.forEach((str, idx) => {
    if (parseInt(str, 10) === Number(str)) {
      result = parseInt(str, 10) + 3 - idx;
    }
  });

  if (result % 3 === 0 && result % 5 === 0) {
    return 'FizzBuzz';
  } else if (result % 3 === 0) {
    return 'Fizz';
  } else if (result % 5 === 0) {
    return 'Buzz';
  }

  return result;
}

export default { solution, testcases };
js
const testcases = [
  {
    input: `Fizz
Buzz
11`,
    output: `Fizz`,
  },
  {
    input: `980803
980804
FizzBuzz`,
    output: `980806`,
  },
  {
    input: `12
Fizz
Buzz`,
    output: `FizzBuzz`,
  },
  {
    input: `17
Fizz
19`,
    output: `Buzz`,
  },
];

function solution(input) {
  let result = 0;
  const splitedInput = input.trim().split('\n');

  splitedInput.forEach((str, idx) => {
    if (parseInt(str, 10) === Number(str)) {
      result = parseInt(str, 10) + 3 - idx;
    }
  });

  if (result % 3 === 0 && result % 5 === 0) {
    return 'FizzBuzz';
  } else if (result % 3 === 0) {
    return 'Fizz';
  } else if (result % 5 === 0) {
    return 'Buzz';
  }

  return result;
}

module.exports = { solution, testcases };
ts
import type { Input, Output, Testcases } from 'bananass';

const testcases = [
  {
    input: `Fizz
Buzz
11`,
    output: `Fizz`,
  },
  {
    input: `980803
980804
FizzBuzz`,
    output: `980806`,
  },
  {
    input: `12
Fizz
Buzz`,
    output: `FizzBuzz`,
  },
  {
    input: `17
Fizz
19`,
    output: `Buzz`,
  },
] satisfies Testcases;

function solution(input: Input): Output {
  let result = 0;
  const splitedInput = input.trim().split('\n');

  splitedInput.forEach((str, idx) => {
    if (parseInt(str, 10) === Number(str)) {
      result = parseInt(str, 10) + 3 - idx;
    }
  });

  if (result % 3 === 0 && result % 5 === 0) {
    return 'FizzBuzz';
  } else if (result % 3 === 0) {
    return 'Fizz';
  } else if (result % 5 === 0) {
    return 'Buzz';
  }

  return result;
}

export default { solution, testcases };
ts
import type { Input, Output, Testcases } from 'bananass';

const testcases = [
  {
    input: `Fizz
Buzz
11`,
    output: `Fizz`,
  },
  {
    input: `980803
980804
FizzBuzz`,
    output: `980806`,
  },
  {
    input: `12
Fizz
Buzz`,
    output: `FizzBuzz`,
  },
  {
    input: `17
Fizz
19`,
    output: `Buzz`,
  },
] satisfies Testcases;

function solution(input: Input): Output {
  let result = 0;
  const splitedInput = input.trim().split('\n');

  splitedInput.forEach((str, idx) => {
    if (parseInt(str, 10) === Number(str)) {
      result = parseInt(str, 10) + 3 - idx;
    }
  });

  if (result % 3 === 0 && result % 5 === 0) {
    return 'FizzBuzz';
  } else if (result % 3 === 0) {
    return 'Fizz';
  } else if (result % 5 === 0) {
    return 'Buzz';
  }

  return result;
}

module.exports = { solution, testcases };

해설

연속된 3개의 문자열에서 그 중 하나 이상이 Fizz, Buzz, FizzBuzz에 해당하지 않는 숫자임을 수학적으로 증명할 수 있습니다.

따라서, 해당 숫자를 기준으로 세 개의 문자열 다음에 올 숫자를 도출한 뒤 조건에 맞게 변형하여 출력합니다.

기여자