C

[C] C언어 코딩 도장 33.8 심사문제: 5와 11의 배수, 공배수 처리하기

Lee Jaeyoon2 2022. 4. 27. 09:00

표준 입력으로 정수 두 개가 입력됩니다(첫 번째 입력 값의 범위는 1~1000, 두 번째 입력 값의 범위는 10~1000이며 첫 번째 입력 값은

두 번째 입력 값보다 항상 작습니다). 첫 번째 정수부터 두 번째 정수까지 숫자를 출력하면서 5의 배수일 때는 "Fizz", 11의 배수일 때는 "Buzz", 5와 11의 공배수일 때는 "FizzBuzz"를 출력하는 프로그램을 만드세요(scanf 함수 호출 전에 문자열을 출력하면 안 됩니다).

 

표준 입력

50 60

 

표준 출력

Fizz
51
52
53
54
FizzBuzz
56
57
58
59
Fizz

 

정답

#include <stdio.h>

int main()
{
    int num1, num2;
    scanf("%d %d", &num1, &num2);
         
    for (int i=num1;i<=num2;i++)
    {
        if (i % 55 == 0)
            printf("FizzBuzz\n");
        else if (i % 5 == 0)
            printf("Fizz\n");
        else if (i % 11 == 0)
            printf("Buzz\n");
        else
            printf("%d\n", i);
    }

    return 0;
}

 

 

풀이

먼저, 5와 11의 최소공배수인 55를 만드는 코드 두 개가 있다. 논리 연산자 &&를 이용하여 i % 5 == 0 && i % 11 == 0과 5와 11의

최소공배수 55인 i % 55 == 0를 이용하는 두 가지 방법이 있다. 55의 배수는 FizzBuzz를 출력하게 하고, 55의 배수가 아니고

5의 배수일 때는 Fizz, 11의 배수일 때는 Buzz를 출력하게 한다.