Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#으로 FizzBuzz 구현하기: 반복문과 조건문 활용 가이드

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는 간단해 보이지만 반복문, 조건문, 나머지 연산자 등 프로그래밍의 기본 개념을 모두 활용해야 하는 훌륭한 연습 문제입니다. 또한 면접에서 논리적 사고력을 평가하는 질문으로도 자주 등장하므로, 위 코드의 동작 원리를 확실히 이해해 두는 것이 좋습니다.