[BOJ]28702-FizzBuzz

yoon_H·2024년 9월 24일

BOJ

목록 보기
99/110

28702

코드가 정말 길어져서 이게 맞나.. 하고 있었는데 통과했다. 잉?
다른 코드들을 찾아봤더니 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;
			}
		}
	}

}

0개의 댓글