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