(+)분류 : 가져온 문서/오메가
FizzBuzz Test
3의 배수는 Fizz, 5의 배수는 Buzz, 3과 5의 공배수는 FizzBuzz로 출력하는 프로그램의 개발 속도를 테스트하는 것이다. 알고리즘이 필요없을 정도로 단순한 문제이지만, 컴퓨터공학 전공자 중 25%가 해결하지 못했다고 한다. # FizzBuzz 프로그램의 요구조건은 다음과 같다.
- 1에서 100까지 출력
- 3의 배수인 경우 숫자 대신 Fizz를 출력
- 5의 배수인 경우 숫자 대신 Buzz를 출력
- 3과 5의 공배수인 경우 숫자 대신 FizzBuzz를 출력
이에 따라서 처음 15개 숫자에 대한 출력은 다음과 같다.
- 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz
실제 통계에 따르면, 이 프로그램을 개발하는 데 현직 개발자는 3분, 신입은 10분, 구직자는 1시간이 걸렸다고 한다. 여러분이 프로그래밍을 배웠다면 한 번 프로젝트 생성에서 디버깅까지 얼마만큼의 시간이 걸리는지 측정해보라.
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. 영상 ✎ ⊖
3. 트리비아 ✎ ⊖
단순하면서도 효과적이라 다른 숫자나 문자열을 사용하거나, 조건을 추가하거나, 범위를 변경하는 등 다양한 변형이 존재한다.
이 문서의 내용 중 전체 또는 일부는 오메가에서 가져왔으며 CC BY-NC-SA 3.0에 따라 이용할 수 있습니다.