
const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'input.txt';
const [a, b, c] = fs.readFileSync(path).toString().trim().split('\n');
if (!isNaN(a)) {
const ans = Number(a) + 3;
if (ans % 3 === 0 && ans % 5 === 0) console.log('FizzBuzz');
else if (ans % 3 === 0) console.log('Fizz');
else if (ans % 5 === 0) console.log('Buzz');
else console.log(ans);
} else if (!isNaN(b)) {
const ans = Number(b) + 2;
if (ans % 3 === 0 && ans % 5 === 0) console.log('FizzBuzz');
else if (ans % 3 === 0) console.log('Fizz');
else if (ans % 5 === 0) console.log('Buzz');
else console.log(ans);
} else if (!isNaN(c)) {
const ans = Number(c) + 1;
if (ans % 3 === 0 && ans % 5 === 0) console.log('FizzBuzz');
else if (ans % 3 === 0) console.log('Fizz');
else if (ans % 5 === 0) console.log('Buzz');
else console.log(ans);
}
⏰ 소요한 시간 : -
미국에서 소수개념 배울때 유명한 피즈버즈 문제라는데 이해하는데 엄청 오래걸렸다 .... ;
처음에 어떻게 풀어야할지 엄청 막막했는데 주어진 세개의 문자열중 반드시 숫자가 존재하게 되어있다. 그래서 그 숫자값으로 목표값을 예측해 푸는 문제
그래서 저렇게 빡빡한 하드코딩을 했는데 ... 아래와 같이 푸는게 더 올바를듯하다
const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'input.txt';
const inputs = fs.readFileSync(path).toString().trim().split('\n');
for (let i = 0; i < 3; i++) {
if (!isNaN(inputs[i])) {
const num = +inputs[i] + 3 - i;
if (num % 3 === 0 && num % 5 === 0) console.log('FizzBuzz');
else if (num % 3 === 0) console.log('Fizz');
else if (num % 5 === 0) console.log('Buzz');
else console.log(num);
break;
}
}