1 minute read

28702번 : FizzBuzz

문제 링크

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

문제 설명

FizzBuzz 문제는 i = 1, 2, … 에 대해 다음 규칙에 따라 문자열을 한 줄에 하나씩 출력하는 문제입니다.

  • i가 3의 배수이면서 5의 배수이면 “FizzBuzz”를 출력합니다.
  • i가 3의 배수이지만 5의 배수가 아니면 “Fizz”를 출력합니다.
  • i가 3의 배수가 아니지만 5의 배수이면 “Buzz”를 출력합니다.
  • i가 3의 배수도 아니고 5의 배수도 아닌 경우 i를 그대로 출력합니다.

FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열이 주어집니다. 이때, 이 세 문자열 다음에 올 문자열은 무엇일까요?

입력

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

출력

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

문제풀이

3개의 문자열을 받을 때 숫자인 경우의 해당 숫자와 몇번째 입력인지를 확인하고 4번째에 오는 수를 출력한다.

def FizzBuzz(num: int) -> str :
    if num % 3 == 0 and num % 5 == 0:
        return 'FizzBuzz'
    elif num % 3 == 0 and num % 5 != 0 :
        return 'Fizz'
    elif num % 3 != 0 and num % 5 == 0:
        return 'Buzz'
    else : 
        return num

arr = []
start_idx, start_num = -1, -1

for i in range(3) :
    string = input()
    if '0' <= string[0] <= '9':
        start_num = int(string)
        start_idx = i
    arr.append(string)

if start_idx != -1 :
    while start_idx < 3 :
        start_idx += 1
        start_num += 1
    print(FizzBuzz(start_num))
else :
    print(arr[0])

Comments