•  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

FizzBuzz 문제

최근 수정 시각 : 2023-04-16 00:47:45 | 조회수 : 597

FizzBuzz Test

3의 배수는 Fizz, 5의 배수는 Buzz, 3과 5의 공배수는 FizzBuzz로 출력하는 프로그램의 개발 속도를 테스트하는 것이다. 알고리즘이 필요없을 정도로 단순한 문제이지만, 컴퓨터공학 전공자 중 25%가 해결하지 못했다고 한다. # FizzBuzz 프로그램의 요구조건은 다음과 같다.
  • 1에서 100까지 출력
  • 3의 배수인 경우 숫자 대신 Fizz를 출력
  • 5의 배수인 경우 숫자 대신 Buzz를 출력
  • 3과 5의 공배수인 경우 숫자 대신 FizzBuzz를 출력

실제 통계에 따르면, 이 프로그램을 개발하는 데 현직 개발자는 3분, 신입은 10분, 구직자는 1시간이 걸렸다고 한다. 여러분이 프로그래밍을 배웠다면 한 번 프로젝트 생성에서 디버깅까지 얼마만큼의 시간이 걸리는지 측정해보라.

목차

1. 실제 코드
1.1. C언어
1.2. C#
1.3. ActionScript 3.0
1.4. Mathematica
1.5. GML
2. 영상

1. 실제 코드

1.1. C언어

#include <stdio.h>

int main(void)
{
    for (int i = 1; i <= 100; i++)
    {
        if (i % 3 == 0)
        {
            if (i % 5 == 0)
            {
                printf("FizzBuzzn");
            }
            else
            {
                printf("Fizzn");
            }
        }
        else if (i % 5 == 0)
        {
            printf("Buzzn");
        }
        else
        {
            printf("%d", i);
        }
    }

    return 0;
}

1.2. C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace FizzBuzzTest
{
    class Program
    {    
        static void Main(string[] args)
        {
            for (int i = 1; i <= 100; i++)
            {
                if (i % 3 == 0)
                {
                    if (i % 5 == 0)
                    {
                        Console.WriteLine("FizzBuzz");
                    }
                    else
                    {
                        Console.WriteLine("Fizz");
                    }
                }
                else if (i % 5 == 0)
                {
                    Console.WriteLine("Buzz");
                }
                else
                {
                    Console.WriteLine(i);
                }
            }
        }
    }
}

1.3. ActionScript 3.0

for(i=1; i<101; i++){
    if(i%3 == 0 && i%5 ==0){
       trace("FizzBuzz")
    }
    else if(i%3 == 0){
       trace("Fizz")
    }
    else if(i%5 == 0){
       trace("Buzz")
    } else {
       trace(i)
    }
}

1.4. Mathematica

Table[Which[Divisible[n, 15], "FizzBuzz", Divisible[n, 3], "Fizz", Divisible[n, 5], "Buzz", True, n], {n, 1, 100}]

1.5. GML

GML은 출력 기능이 없으므로 show_message로 대체한다.

 for(i=1; i<101; i+=1){
     if i mod 3 = 0 {
         if i mod 5 = 0{
             show_message("FizzBuzz");
         } else {
             show_message("Fizz");
         }
     } else if i mod 5 = 0 {
         show_message("Buzz");
     } else {
         show_message(i);
     }
     if i=100 {
         game_end();
     }
 }

2. 영상