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

C++로 Fizz Buzz 문제 구현하기

Fizz Buzz 문제란?

이 글에서는 Fizz Buzz 문제의 구현 방법과 다양한 변형 유형에 대해 살펴보겠습니다.

Fizz Buzz는 간단한 프로그래밍 문제로, 1부터 100까지의 숫자를 순회하면서 3의 배수는 'Fizz'로, 5의 배수는 'Buzz'로 바꿔 출력하는 문제입니다.

예시를 통해 문제를 이해해 보겠습니다.

1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'Fizz Buzz', 16, 17, 'Fizz', 19, 'Buzz',...

해결 접근 방법

이 문제를 해결하는 가장 간단한 방법은 1부터 100까지 반복문을 돌면서 각 반복마다 아래 두 조건을 확인하는 것입니다.

  • 조건 1 - i가 3으로 나누어 떨어지면 해당 숫자를 'Fizz'로 대체합니다.
  • 조건 2 - i가 5로 나누어 떨어지면 해당 숫자를 'Buzz'로 대체합니다.

그 외의 경우에는 숫자를 그대로 출력합니다. 만약 숫자가 3과 5 모두로 나누어 떨어진다면(즉, 15의 배수라면) Fizz Buzz를 출력합니다.

C++ 구현 코드

아래는 위 해결 방법을 실제로 구현한 프로그램입니다.

#include <iostream>
using namespace std;

int main(){

    for (int i=1; i<=100; i++){

        if (i%15 == 0)
            cout<<"Fizz Buzz,\t";
        else if ((i%3) == 0)
            cout<<"Fizz,\t";
        else if ((i%5) == 0)
            cout<<"Buzz,\t";
        else
            cout<<i<<",\t";
    }
    return 0;
}

실행 결과

1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16, 17, Fizz, 19, Buzz, Fizz, 22,
23, Fizz, Buzz, 26, Fizz, 28, 29, Fizz Buzz, 31, 32, Fizz, 34, Buzz, Fizz, 37, 38, Fizz, Buzz, 41, Fizz, 43,
44, Fizz Buzz, 46, 47, Fizz, 49, Buzz, Fizz, 52, 53, Fizz, Buzz, 56, Fizz, 58, 59, Fizz Buzz, 61, 62, Fizz,
64, Buzz, Fizz, 67, 68, Fizz, Buzz, 71, Fizz, 73, 74, Fizz Buzz, 76, 77, Fizz, 79, Buzz, Fizz, 82, 83, Fizz,
Buzz, 86, Fizz, 88, 89, Fizz Buzz, 91, 92, Fizz, 94, Buzz, Fizz, 97, 98, Fizz, Buzz,

Fizz Buzz 문제의 다양한 변형

Fizz Buzz 문제는 프로그래머의 논리적 사고력을 평가하기 위해 코딩 면접에서 자주 활용되는 대표적인 프로그래밍 문제입니다. 시간이 지나면서 문제를 더 흥미롭게, 때로는 더 어렵게 만들기 위한 여러 업그레이드가 등장했습니다. 아래는 Fizz Buzz 문제의 대표적인 변형들입니다.

  • 자릿수 기반 Fizz Buzz(Digit Based Fizz Buzz) - 이 변형에서는 배수 여부를 확인하는 대신, 숫자의 자릿수에 3이나 5가 포함되어 있는지를 기준으로 값을 변경해야 합니다.

    예시 - 1, 2, Fizz(3), 4, Buzz(5), 6, 7, 8, 9, 10, 11, 12, Fizz(13), 14, Buzz(15), 16, 17, 18, 19, 20, 21, 22, Fizz(23), 24, Buzz(25), 26, 27, 28, 29, Fizz(30), Fizz(31), Fizz(32), Fizz(33), Fizz(34), Fizz Buzz(35),...

  • Fizz Buzz Woof - 이 변형은 다음 소수인 7에 대한 단어 'Woof'를 추가합니다. 이제 3, 5, 7 세 가지 수에 대해 값을 변경하게 됩니다.

    예시 - 1, 2, Fizz(3), 4, Buzz(5), Fizz(6), Woof(7), 8, Fizz(9), Buzz(10), 11, Fizz(12), 13, Woof(14), Buzz(15), 16, 17, Fizz(18), 19, Buzz(20), Fizz Woof(21), 22, 23, Fizz(24), Buzz(25), 26, Fizz Woof(27), Woof(28), 29, Buzz(30), 31, 32, Fizz(33), 34, Fizz Buzz Woof(35)...

  • 다른 진법 기반 Fizz Buzz - 또 다른 변형은 진법 자체를 변경하여 문제의 난이도를 한층 높이는 것입니다.

    예시 - 16진수(hexadecimal)로 변경한 경우: 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, B, Fizz, D, E, Fizz Buzz, 11, Fizz,....

  • 두 개 이상의 변형 결합 - 여러 변형을 조합하면 문제를 훨씬 더 복잡하게 만들 수 있습니다. 예를 들어, 약수 조건과 자릿수 조건을 모두 고려하여 Fizz Buzz로 변경하는 형태가 그 예입니다.