just inside

[백준] Bronze 1. 28702 - FizzBuzz python 본문

coding test/구현

[백준] Bronze 1. 28702 - FizzBuzz python

방울도마도 2024. 7. 17. 09:50
728x90

문제 링크

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


문제 설명

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

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

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

 

입력

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

 

출력

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


제출 코드

import sys

input = sys.stdin.readline
fizzbuzz = []
for _ in range(3):
    fizzbuzz.append(input().rstrip())

for i in range(3):
    word = fizzbuzz[i]
    if word.isdigit():
        result = int(word) + 3 - i
        if result % 3 == 0 and result % 5 == 0:
            print("FizzBuzz")
        elif result % 3 == 0:
            print("Fizz")
        elif result % 5 == 0:
            print("Buzz")
        else:
            print(result)
        break

 

풀이

  • 입력받은 세 개의 문자열 다음에 올 문자열이 무엇인지 출력해야 하는 문제이다.
  • 3 또는 5의 배수에 대해서 Fizz, Buzz, FizzBuzz가 출력되어야 한다. 즉, 3개 연속으로 문자열이 오는 경우는 없다.
  • 따라서 입력받은 문자열 중 숫자를 찾아 다음으로 이어질 숫자가 무엇인지 확인하고, 조건문을 통해 해당하는 값을 출력해준다.
  • str.isdigit() 함수를 통해 입력받은 문자열이 숫자인지 확인한다.
    • 숫자라면, 3개의 문자열 중 몇 번째인지 확인하여 이어질 숫자가 무엇인지 계산한다.
  • 찾아낸 숫자에 대해 조건문으로 원하는 값을 출력하도록 한다.

 

알아둘 사항

  • str.isdigit() 함수를 사용하면 문자열이 숫자로만 이루어져 있는지 확인할 수 있다.
728x90