[C/Python] 백준 28702번 - FizzBuzz

매미·2024년 6월 27일

백준

목록 보기
1/13

https://www.acmicpc.net/problem/28702

문제

FizzBuzz 문제는 i=1,2,i = 1, 2, \cdots 에 대해 다음 규칙에 따라 문자열을 한 줄에 하나씩 출력하는 문제입니다.
ii33의 배수이면서 55의 배수이면 “FizzBuzz”를 출력합니다.
ii33의 배수이지만 55의 배수가 아니면 “Fizz”를 출력합니다.
ii33의 배수가 아니지만 55의 배수이면 “Buzz”를 출력합니다.
ii33의 배수도 아니고 55의 배수도 아닌 경우 ii를 그대로 출력합니다.
FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열이 주어집니다.
이때, 이 세 문자열 다음에 올 문자열은 무엇일까요?

입력

FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열이 한 줄에 하나씩 주어집니다. 각 문자열의 길이는 88 이하입니다. 입력이 항상 FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열에 대응됨이 보장됩니다.

출력

연속으로 출력된 세 개의 문자열 다음에 올 문자열을 출력하세요. 여러 문자열이 올 수 있는 경우, 아무거나 하나 출력하세요.

발상

3의 배수, 5의 배수, 15의 배수는 세 개의 문자열에 연속으로 올 수 없음.
-> 적어도 하나의 숫자가 존재하므로 그걸 이용하여 다음에 올 문자열을 유추.

Clang

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
    char arr[3][9];
    int n;
    for (int i=0; i<3; i++) {
        scanf("%s", arr[i]);
        if ((strcmp(arr[i],"Fizz")!=0) && (strcmp(arr[i],"Buzz")!=0) && (strcmp(arr[i],"FizzBuzz")!=0))
            n = atoi(arr[i])+3-i;
    }
    if (n%15==0)
        printf("FizzBuzz");
    else if (n%3==0)
        printf("Fizz");
    else if (n%5==0)
        printf("Buzz");
    else
        printf("%d", n);
	return 0;    
}

Python

for i in range(0,3):
    x = input()
    if x not in ['Fizz', 'Buzz', 'FizzBuzz']:
        n = int(x)+3-i
if n%15==0:
    print("FizzBuzz")
elif n%3==0:
    print("Fizz")
elif n%5==0:
    print("Buzz")
else:
    print(n)
profile
Kwangwoon Univ. Computer Information and Engineering 24

0개의 댓글