[C++] 백준 28702번 FizzBuzz

xyzw·2025년 8월 28일
0

algorithm

목록 보기
74/97

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

풀이

문제를 이해하는 것이 어려웠다.
연속되는 세 개의 정수가 있고, 해당 정수에 대응하는(조건에 따라 만들어진) 문자열 세 개가 입력값으로 주어지는 것이다. 그런데 문제에는 연속되는 세 개의 정수라는 말이 없어서 예제를 보고 유추해야 했다.

연속되는 세 개의 정수에는 3의 배수, 5의 배수, 15의 배수가 모두 포함될 수는 없다. 따라서 적어도 한 문자열은 대응되는 수가 3의 배수도, 5의 배수도 아니어서 그 수 그대로 주어진다.

그 수를 이용해서 세 문자열 다음에 올 문자열을 구했다.

코드

#include <iostream>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    int num = 0;
    string ans;
    string s[3];
    for(int i=0; i<3; i++) cin >> s[i];
    
    for(int i=0; i<3; i++) {
        if(s[i][0] != 'F' && s[i][0] != 'B') {
            num = stoi(s[i]) + 3 - i;
        }
    }
    
    if(num % 15 == 0) ans = "FizzBuzz";
    else if(num % 3 == 0) ans = "Fizz";
    else if(num % 5 == 0) ans = "Buzz";
    else ans = to_string(num);
    
    cout << ans;
    
    return 0;
}

0개의 댓글