Write a program that outputs the string representation of numbers from 1 to n.
But for multiples of three it should output “Fizz” instead of the number and for the multiples of five output “Buzz”. For numbers which are multiples of both three and five output “FizzBuzz”.
Example
n = 15,
Return:
[
"1",
"2",
"Fizz",
"4",
"Buzz",
"Fizz",
"7",
"8",
"Fizz",
"Buzz",
"11",
"Fizz",
"13",
"14",
"FizzBuzz"
]
이 문제의 첫인상은 3, 6, 9문제와 비슷하다는 느낌이 들었다ㅋㅋ 다른점은 3의 배수만 짝 하는게 아니라 5의 배수 역시 쩍 해줘야하고 3과 5의 공통된 배수는 짝쩍 해줘야 한다는 점이다.
var fizzBuzz = function(n) {
// [1,2,"Fizz",4,"Buzz","Fizz",7,8,"Fizz","Buzz"];
// for -> 1~n, push
// for 으로 하는 방법
let result = [];
for(let i = 1; i <= n; i++){
if(i % 3 === 0 && i % 5 === 0 ) result.push("FizzBuzz");
else if(i % 3 === 0) result.push("Fizz");
else if(i % 5 === 0 ) result.push("Buzz");
else result.push(i.toString());
}
return result;
};
for문으로 n만큼 돌아야 하기 때문에 시간복잡도는 O(n)으로 추정된다.
var fizzBuzz = function(n) {
// 2. map
return new Array(n).fill(0).map((val, idx) => (++idx % 3 ? '': 'Fizz') + (idx % 5 ? '': 'Buzz') || '' + idx);
};
끝😀