[백준] Baekjoon Online Judge
문제
FizzBuzz 문제는 𝑖 = 1, 2, ⋯ 에 대해 다음 규칙에 따라 문자열을 한 줄에 하나씩 출력하는 문제입니다.
- 𝑖가 3의 배수이면서 5의 배수이면 “FizzBuzz”를 출력합니다.
- 𝑖가 3의 배수이지만 5의 배수가 아니면 “Fizz”를 출력합니다.
- 𝑖가 3의 배수가 아니지만 5의 배수이면 “Buzz”를 출력합니다.
- 𝑖가 3의 배수도 아니고 5의 배수도 아닌 경우 𝑖를 그대로 출력합니다.
FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열이 주어집니다. 이때, 이 세 문자열 다음에 올 문자열은 무엇일까요?
입력
FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열이 한 줄에 하나씩 주어집니다. 각 문자열의 길이는 8 이하입니다. 입력이 항상 FizzBuzz 문제에서 연속으로 출력된 세 개의 문자열에 대응됨이 보장됩니다.
출력
연속으로 출력된 세 개의 문자열 다음에 올 문자열을 출력하세요. 여러 문자열이 올 수 있는 경우, 아무거나 하나 출력하세요.
풀이
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int idx = 0;
int num = 0;
for (int i = 0; i < 3; i++) {
string s;
cin >> s;
if (s != "FizzBuzz" && s != "Fizz" && s != "Buzz") {
idx = i;
num = stoi(s);
}
}
num += (3 - idx);
if (num % 5 == 0 && num % 3 == 0) cout << "FizzBuzz\n";
else if (num % 3 == 0) cout << "Fizz\n";
else if (num % 5 == 0) cout << "Buzz\n";
else cout << num << '\n';
return 0;
}
연속으로 입력되는 3개의 문자열 중 하나는 무조건 i를 그대로 출력한 숫자이다. 이 i를 그대로 출력한 것의 내용과 몇 번째로 입력 받았는지를 각각 num과 idx에 저장하였다.
모든 입력이 끝나면 num에 (3 - idx)를 더하고, 이 값에 따라 다음에 오는 문자열을 출력하게 된다.
'백준 > C++' 카테고리의 다른 글
[Baekjoon/C++] 30804번 - 과일 탕후루 (1) | 2024.06.07 |
---|---|
[Baekjoon/C++] 30802번 - 웰컴 키트 (1) | 2024.06.05 |
[Baekjoon/C++] 31403번 - A + B - C (0) | 2024.06.03 |
[Baekjoon/C++] 11657번 - 타임머신 (0) | 2024.05.31 |
[Baekjoon/C++] 4485번 - 녹색 옷 입은 애가 젤다지? (0) | 2024.05.30 |