Fizz Buzz

Directions

1 부터 n 까지 출력하기. 단, 3 의 배수에는 fizz, 5 의 배수에는 buzz, 3 과 5 의 공배수에는 fizzbuzz 찍기

Examples

fizzBuzz(5)
1
2
fizz
4
buzz

1.

우선, input 값이 3 의 배수인지, 5 의 배수인지, 3 과 5 의 공배수인지 확인해야 합니다.

3 으로 나누어 떨어지면 3 의배수, 5 로 나누어 떨어지면 5 의배수, 그리고 3 과 5 로 모두 나누어 떨어지면 공배수가 됩니다.

즉, n % 3 === 0 일경우 3 의 배수가 되겠지요.

function fizzBuzz(n) {
  for (let i = 1; i <= n; i++) {
    // 3과 5의 공배수인지 체크
    if (i % 3 === 0 && i % 5 === 0) {
      // 공배수일경우 fizzbuzz 출력
      console.log('fizzbuzz')
    } else if (i % 3 === 0) {
      // 3의 배수일경우 fizz 출력
      console.log('fizz')
    } else if (i % 5 === 0) {
      // 5의 배수일경우 buzz 출력
      console.log('buzz')
    } else {
      // 배수가 아닐경우 숫자 출력
      console.log(i)
    }
  }
}

module.exports = fizzBuzz

WARNING

3 과 5 의 공배수일경우 'fizzbuzz'를 출력하여야 하므로, 가장먼저 공배수인지 확인하여야 합니다.

Test

const fizzBuzz = require('./index')

test('fizzBuzz function is defined', () => {
  expect(fizzBuzz).toBeDefined()
})

test('Calling fizzbuzz with `5` prints out 5 statements', () => {
  fizzBuzz(5)

  expect(console.log.mock.calls.length).toEqual(5)
})

test('Calling fizzbuzz with 15 prints out the correct values', () => {
  fizzBuzz(15)

  expect(console.log.mock.calls[0][0]).toEqual(1)
  expect(console.log.mock.calls[1][0]).toEqual(2)
  expect(console.log.mock.calls[2][0]).toEqual('fizz')
  expect(console.log.mock.calls[3][0]).toEqual(4)
  expect(console.log.mock.calls[4][0]).toEqual('buzz')
  expect(console.log.mock.calls[5][0]).toEqual('fizz')
  expect(console.log.mock.calls[6][0]).toEqual(7)
  expect(console.log.mock.calls[7][0]).toEqual(8)
  expect(console.log.mock.calls[8][0]).toEqual('fizz')
  expect(console.log.mock.calls[9][0]).toEqual('buzz')
  expect(console.log.mock.calls[10][0]).toEqual(11)
  expect(console.log.mock.calls[11][0]).toEqual('fizz')
  expect(console.log.mock.calls[12][0]).toEqual(13)
  expect(console.log.mock.calls[13][0]).toEqual(14)
  expect(console.log.mock.calls[14][0]).toEqual('fizzbuzz')
})

beforeEach(() => {
  jest.spyOn(console, 'log').mockImplementation(() => {})
})

afterEach(() => {
  console.log.mockRestore()
})