코딩테스트/Algorithm

[백준 python 28702] FizzBuzz

hu6r1s 2024. 10. 9. 17:37

[Bronze I] FizzBuzz - 28702

문제 링크

성능 요약

메모리: 31120 KB, 시간: 40 ms

분류

수학, 문자열

제출 일자

2024년 10월 9일 17:31:37

문제 설명

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

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

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

입력

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

출력

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

 

풀이

for i in range(3, 0, -1):
    x = input()
    if x not in ["Fizz", "Buzz", "FizzBuzz"]:
        n = int(x) + i
if not n % 3 and not n % 5:
    print("FizzBuzz")
elif not n % 3 and n % 5:
    print("Fizz")
elif n % 3 and not n % 5:
    print("Buzz")
else:
    print(n)

 

출력하는 것은 문제 설명에 맞게 그냥 출력하면 될 것 같았는데 어떻게 n을 구할 수 있도록 코드를 짤지 모르겠었다.

입력을 차례대로 받으면서 처음에 입력받은 것이 숫자이면 3을 더해주고, 두번째 입력값이 숫자이면 2를 더해주고, 세 번째 입력값이 숫자이면 1을 더해주는 방식으로 구현하면 되는 것 같다.

이후에는 설명에 맞게 구현하면 된다.