[백준28702_자바스크립트(javascript)] - FizzBuzz

경이·2024년 11월 16일

𝑩𝑶𝑱 (𝒋𝒔)

목록 보기
260/325

🔴 문제

FizzBuzz


🟡 Sol

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;
  }
}

🔵 Ref

profile
록타르오가르

0개의 댓글