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
에 해당하지 않는 숫자임을 수학적으로 증명할 수 있습니다.
따라서, 해당 숫자를 기준으로 세 개의 문자열 다음에 올 숫자를 도출한 뒤 조건에 맞게 변형하여 출력합니다.