반응형

import sys
input = sys.stdin.readline
def fizzbuzz(i):
if i % 3 == 0 and i % 5 == 0:
print('FizzBuzz')
elif i % 3 == 0:
print('Fizz')
elif i % 5 == 0:
print('Buzz')
else:
print(i)
# 이렇게 놓는 이유는 i가 1이라면 3만큼 더하면 되고, 2라면 2, 3이라면 1만큼 더하면 된다.
# 그렇기 때문에 반대로 놓아야 다음을 예측이 가능하다.
for i in range(3, 0, -1):
n = input().strip()
if n.isdigit():
fizzbuzz(int(n)+i)
break
출력
연속으로 출력된 세 개의 문자열 다음에 올 문자열을 출력하세요. 여러 문자열이 올 수 있는 경우, 아무거나 하나 출력하세요.
예제 입력 1
Fizz
Buzz
11
예제 출력 1
Fizz
예제 입력 2
980803
980804
FizzBuzz
예제 출력 2
980806
최근 문제와 비슷한 문제이지만 조건이 추가가 되었다.

우선 입력값은 항상 3개씩 받기 때문에 이를 바탕으로 다음 숫자를 예측해야 한다.
import sys
input = sys.stdin.readline
def fizzbuzz(i):
if i % 3 == 0 and i % 5 == 0:
print('FizzBuzz')
elif i % 3 == 0:
print('Fizz')
elif i % 5 == 0:
print('Buzz')
else:
print(i)
일단 이건 기존 확인하는 조건과 동일하다. 이때 추가적으로 생각할 게 있는데 바로 아까 말했던 순서이다.
초기에는 이러한 방식으로 문제를 풀지 못했다. 원래는 3개의 숫자를 각각 확인하여 예측하기 위해선 어떻게 해야할지 고민하고 그랬지만 그때마다 생기는 문제로는 4번째 값을 어떻게 알 수 있을지 모르겠다는 거였다. 그러다가 결국 우리는 4번째를 구해야 하고, 1번째라면 3을 더한 숫자를 예측하고, 2번이라면 2, 3번이라면 1을 더하게 하면 되는데 이는 for문의 range 범위를 수정하면 할 수 있는 부분이었다.
# 이렇게 놓는 이유는 i가 1이라면 3만큼 더하면 되고, 2라면 2, 3이라면 1만큼 더하면 된다.
# 그렇기 때문에 반대로 놓아야 다음을 예측이 가능하다.
for i in range(3, 0, -1):
n = input().strip()
if n.isdigit():
fizzbuzz(int(n)+i)
break
그래서 문자열인지 숫자열인지 파악함과 동시에 값을 출력하게 만들면 정답을 도출할 수 있다.
반응형
'알고리즘' 카테고리의 다른 글
| 백준 : 피보나치 함수 - 1003 (0) | 2025.10.15 |
|---|---|
| 백준 : 소수 구하기 - 1929 (0) | 2025.10.15 |
| 백준 : FizzBuzz - 14761 (0) | 2025.10.10 |
| 백준 : 토마토 - 7576 (0) | 2025.10.10 |
| 백준 : 스택 수열 - 1874 (0) | 2025.10.06 |