반응형
1. 문제
- 정수 n이 주어질 때, 크기 n의 배열의 요소로 Fizz, Buzz, FizzBuzz, 문자열 index를 저장 후 반환.
- index는 1부터 시작하고, index를 기준으로 3으로 나누어 떨어지면 Fizz, 5로 나누어 떨어지면 Buzz, 둘 다 나누어 떨어지면 FizzBuzz, 그 외는 index를 문자열로 저장.
- ex. 1은 문자열로 변경 후 저장은 i-1에 저장
2. 해결
/**
1. 3과 5로 나뉘어 지면 FizzBuzz.
2. 3으로 나뉘어 지면 Fizz.
3. 5로 나뉘어 지면 Buzz.
4. 해당 안되면 문자열 index.
index는 1부터 시작.
*/
function fizzBuzz(n: number): string[] {
const fizzBuzz : string[] = new Array(n).fill("");
for (let i = 1; i <= n; i++) {
let target : string = "";
// 1. 3으로 나누어 떨어지면 Fizz.
if (i % 3 === 0) target = "Fizz"
// 2. 5로 나누어 떨어지면 Buzz.
if (i % 5 === 0) target += "Buzz"
// 3. 3, 5 둘 다 나누어 떨어지면 Fizz + Buzz.
// 4. target에 내용이 없으면, index 문자열 저장.
fizzBuzz[i-1] = target.length === 0 ? String(i) : target;
}
return fizzBuzz;
};
- 처음에는 조건문에 3과 5 모두 나누어 떨어지는 경우도 확인하는 경우도 추가해서 통과하기는 했지만, 1ms가 걸렸다.
- Fizz와 Buzz의 순서는 정해져 있음을 생각해보면 된다.