FizzBuzz 문제는 i= 1,2, 에 대해 다음 규칙에 따라 문자열을 한 줄에 하나씩 출력하는 문제입니다.
• 2가 3의 배수이면서 5의 배수이면 " F1zzBUzz "를 출력합니다.
• 2가 3의 배수이지만 5의 배수가 아니면 " Fizz "를 출력합니다.
• 2가 3의 배수가 아니지만 5의 배수이면 " Buzz "를 출력합니다.
• 2가 3의 배수도 아니고 5의 배수도 아닌 경우 8를 그대로 출력합니다.
FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열이 주어집니다.
이때, 이 세 문자열 다음에 올 문자열은 무엇일까요?
FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열이 한 줄에 하나씩 주어집니다. 각 문자열의 길이는 8 이하 입니다. 입력이 항상 FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열에 대응됨이 보장됩니다.
연속으로 출력된 세 개의 문자열 다음에 올 문자열을 출력하세요. 여러 문자열이 올 수 있는 경우, 아무거나 하나 출력하세요.
3, 5, 15의 배수가 연속되서 나오지 않으니까 3개중에 하나는 반드시 숫자일거라고 생각했다.
3개의 문자열을 입력받고, if문을 사용해서 Fizz, Buzz, FizzBuzz 중에 하나라도 해당되면 배제해버리고, 숫자이 값만 받아서 리스트에 추가! 그리고 그 숫자의 인덱스도 따로 저장했다.
그 숫자 + 숫자의 번호를 이용하면 그 다음 나올 숫자를 알 수 있기 때문!!
n1 = input()
n2 = input()
n3 = input()
L = []
L.append(n1)
L.append(n2)
L.append(n3)
P = []
N =[]
for i in range(3) :
if L[i] == "Fizz" :
L[i] = 3
elif L[i] == "Buzz" :
L[i] = 5
elif L[i] =="FizzBuzz" :
L[i] = 15
else :
L[i] = int(L[i])
P.append(L[i])
N.append(i)
if N[0] ==0 :
k = P[0] + 3
elif N[0] == 1 :
k = P[0] + 2
else :
k = P[0] + 1
if k %3 ==0 :
if k%5==0 :
print("FizzBuzz")
else :
print("Fizz")
elif k%5 ==0:
print("Buzz")
else :
print(k)
이렇게 코딩했는데 너무 코드가 길기도 했고, 뭔가 개선할 수 있는 방법이 분명히 있을 것 같았다.
그래서 나의 온라인 선생님, GPT에게 헬프를 외쳤다.
inputs = [input() for _ in range(3)]
positions = [] # 숫자의 위치를 저장
# 첫 번째 숫자의 위치에 따라 계산
k = inputs[positions[0]] + (3 - positions[0])
inputs = [input() for _ in range(3)] # 입력을 한 줄로 처리
positions = [] # 숫자의 위치를 저장
# 입력 처리
for i in range(3):
if inputs[i] == "Fizz":
inputs[i] = 3
elif inputs[i] == "Buzz":
inputs[i] = 5
elif inputs[i] == "FizzBuzz":
inputs[i] = 15
else:
inputs[i] = int(inputs[i])
positions.append(i)
# 첫 번째 숫자의 위치에 따라 계산
k = inputs[positions[0]] + (3 - positions[0])
# 결과 출력
if k % 15 == 0:
print("FizzBuzz")
elif k % 3 == 0:
print("Fizz")
elif k % 5 == 0:
print("Buzz")
else:
print(k)