BOJ 문제풀이

백준 28702 c++ 문제 풀이 (FizzBuzz)

koreasunoo 2024. 8. 10. 16:20
SMALL

https://www.acmicpc.net/problem/28702

 

핵심 전략:

연속 된 세 수 중 최소 하나의 수는 Fizz, Buzz, FizzBuzz에 해당되지 않는다는 사실을 이용

 

핵심 전략 증명:

 

Fizz, Bizz, FizzBizz는 15를 주기로 가지며 규칙성이 있다. 따라서 1부터 15 중에 3의 배수, 5의 배수에 해당하는 것을 표시하면 위와 같고 그 수들은 16~30과 위치가 동일하다. 또 이를 보면 연속 된 세 수가 모두 표시 돼있는 경우는 없기 때문에 세 수 모두 Fizz, Bizz, FizzBizz에 속해 있을 수 없다.

 

정답 코드:

#include <bits/stdc++.h>
#define nl '\n'
using namespace std;
typedef long long ll;

int i, j;

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

	string s1, s2, s3;
	cin >> s1 >> s2 >> s3;

	int num;

	if (s1[3] != 'z'){
		num = stoi(s1) + 3;
	}
	if (s2[3] != 'z'){
		num = stoi(s2) + 2;
	}
	if (s3[3] != 'z'){
		num = stoi(s3) + 1;
	}

	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 << nl;
	}

    return 0;
}
LIST

'BOJ 문제풀이' 카테고리의 다른 글

백준 30804 c++ 풀이 (과일 탕후루)  (0) 2024.08.11
백준 30802 c++ 문제 풀이 (웰컴 키트)  (0) 2024.08.10
백준 23175번 c++ 풀이  (0) 2021.10.11
백준 1644번 c++ 풀이  (0) 2021.10.10
백준 2003번 c++ 풀이  (0) 2021.10.10