FizzBuzz란 무엇인가?
FizzBuzz는 프로그래밍 학습자라면 누구나 한 번쯤 마주치게 되는 대표적인 입문용 알고리즘 문제입니다. 이 문제는 1부터 100까지의 숫자를 출력하되, 다음과 같은 규칙에 따라 특정 문자열로 대체하여 출력해야 합니다.
- 숫자가 3의 배수인 경우 → "Fizz" 출력
- 숫자가 5의 배수인 경우 → "Buzz" 출력
- 숫자가 3과 5의 공배수(15의 배수)인 경우 → "FizzBuzz" 출력
- 그 외의 경우 → 해당 숫자를 그대로 출력
아래에서 C#을 이용한 FizzBuzz 구현 방법을 단계별로 살펴보겠습니다.
C# FizzBuzz 전체 소스 코드
다음은 C#으로 작성된 FizzBuzz 프로그램의 전체 코드입니다.
using System;
namespace FizzBuzzDemo {
public class example {
static void Main(string[] args) {
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0 && i % 5 == 0) {
Console.WriteLine("FizzBuzz");
} else if (i % 3 == 0) {
Console.WriteLine("Fizz");
} else if (i % 5 == 0) {
Console.WriteLine("Buzz");
} else {
Console.WriteLine(i);
}
}
}
}
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz
코드 동작 원리 상세 설명
이제 위 프로그램이 어떻게 동작하는지 자세히 살펴보겠습니다.
1. for 반복문으로 숫자 생성
for 반복문이 1부터 100까지 순회하면서 필요한 모든 숫자를 생성합니다. 변수 i는 현재 처리 중인 숫자를 나타냅니다.
2. 조건문으로 배수 판별
일련의 if-else if 조건문을 사용하여 숫자 i가 3으로 나누어 떨어지는지, 5로 나누어 떨어지는지, 아니면 둘 다 해당되는지를 검사합니다. 여기서 핵심은 나머지 연산자(%)를 활용한다는 점입니다.
i % 3 == 0 && i % 5 == 0: 3과 5 모두로 나누어 떨어지면 "FizzBuzz"를 출력합니다.i % 3 == 0: 3으로만 나누어 떨어지면 "Fizz"를 출력합니다.i % 5 == 0: 5로만 나누어 떨어지면 "Buzz"를 출력합니다.- 위 조건에 모두 해당하지 않으면 숫자
i를 그대로 출력합니다.
3. 조건 검사 순서가 중요한 이유
주목할 점은 공배수 조건(3과 5 모두)을 가장 먼저 검사한다는 것입니다. 만약 3의 배수 조건을 먼저 검사하면, 15처럼 3과 5의 공배수인 숫자가 "Fizz"로만 출력되고 "FizzBuzz"에는 도달하지 못하기 때문입니다. 따라서 조건문의 순서는 정확한 결과를 위해 필수적입니다.
핵심 로직 부분의 코드 스니펫은 다음과 같습니다.
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0 && i % 5 == 0) {
Console.WriteLine("FizzBuzz");
}else if (i % 3 == 0) {
Console.WriteLine("Fizz");
} else if (i % 5 == 0) {
Console.WriteLine("Buzz");
} else {
Console.WriteLine(i);
}
}마무리
FizzBuzz는 간단해 보이지만 반복문, 조건문, 나머지 연산자 등 프로그래밍의 기본 개념을 모두 활용해야 하는 훌륭한 연습 문제입니다. 또한 면접에서 논리적 사고력을 평가하는 질문으로도 자주 등장하므로, 위 코드의 동작 원리를 확실히 이해해 두는 것이 좋습니다.