코드가 정말 길어져서 이게 맞나.. 하고 있었는데 통과했다. 잉?
다른 코드들을 찾아봤더니 3,5의 배수가 3개 연속되는 경우는 없다는 사실을 알게 되었다. 그래서 완전 간결했다 ㅋㅋ...
#include <iostream>
#include <string>
using namespace std;
long long arr[3];
long long num[3] = { 1, 2, -2 };
int main()
{
cin.tie(NULL);
cout.tie(NULL);
ios::sync_with_stdio(false);
int idx = -1;
for (int i = 0; i < 3; i++)
{
string tmp;
cin >> tmp;
if (tmp == "FizzBuzz")
{
arr[i] = -1;
}
else if (tmp == "Fizz")
{
arr[i] = -2;
}
else if (tmp == "Buzz")
{
arr[i] = -3;
}
else
{
arr[i] = stoi(tmp);
idx = i;
}
}
if (idx != -1)
{
int res = arr[idx] + (3 - idx);
if (res % 15 == 0)
{
cout << "FizzBuzz";
}
else if (res % 3 == 0)
{
cout << "Fizz";
}
else if (res % 5 == 0)
{
cout << "Buzz";
}
else
{
cout << res;
}
}
else
{
bool flag = true;
long long cnt = 4;
while (flag)
{
// cnt 값 판별해서 비교
long long tmp = cnt;
bool test = true;
for (int i = 0; i < 3; i++)
{
if (arr[i] != num[i])
{
test = false;
}
}
if (test)
{
if (tmp % 15 == 0)
{
cout << "FizzBuzz";
}
else if (tmp % 3 == 0)
{
cout << "Fizz";
}
else if (tmp % 5 == 0)
{
cout << "Buzz";
}
else
{
cout << tmp;
}
flag = false;
break;
}
else
{
if (tmp % 15 == 0)
{
tmp = -1;
}
else if (tmp % 3 == 0)
{
tmp = -2;
}
else if (tmp % 5 == 0)
{
tmp = -3;
}
num[0] = num[1];
num[1] = num[2];
num[2] = tmp;
cnt += 1;
}
}
}
}