Problem Solving/BOJ

[백준 / BOJ] C++ 28702 FizzBuzz

nageune 2023. 8. 15. 03:11
728x90
반응형

28702번: FizzBuzz

 

문제

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

 

28702번: FizzBuzz

FizzBuzz 문제는 $i = 1, 2, \cdots$ 에 대해 다음 규칙에 따라 문자열을 한 줄에 하나씩 출력하는 문제입니다. $i$가 $3$의 배수이면서 $5$의 배수이면 “FizzBuzz”를 출력합니다. $i$가 $3$의 배수이지만 $5$

www.acmicpc.net

 

 

풀이

대회 도중에는 isdigit 함수가 생각이 안났다..

문자의 첫번째 글자가 ascii 코드 기준 숫자인지로 문자열 전체가 숫자인지 판단했다.

입력받은 a, b, c 중 반드시 하나는 숫자이기 때문에 각각에 대해 숫자인 경우에 +1, 2, 3을 해서 조건에 맞게 출력했다.

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  string a, b, c;
  cin >> a >> b >> c;
  if (c[0] >= 48 && c[0] <= 57) {
    int x = stoi(c) + 1;
    if (x % 3 == 0) {
      if (x % 5 == 0) {
        cout << "FizzBuzz";
      } else {
        cout << "Fizz";
      }
    } else if (x % 5 == 0) {
      cout << "Buzz";
    } else {
      cout << x;
    }
  } else if (b[0] >= 48 && b[0] <= 57) {
    int x = stoi(b) + 2;
    if (x % 3 == 0) {
      if (x % 5 == 0) {
        cout << "FizzBuzz";
      } else {
        cout << "Fizz";
      }
    } else if (x % 5 == 0) {
      cout << "Buzz";
    } else {
      cout << x;
    }
  } else if (a[0] >= 48 && a[0] <= 57) {
    int x = stoi(a) + 3;
    if (x % 3 == 0) {
      if (x % 5 == 0) {
        cout << "FizzBuzz";
      } else {
        cout << "Fizz";
      }
    } else if (x % 5 == 0) {
      cout << "Buzz";
    } else {
      cout << x;
    }
  }
  return 0;
}

 

728x90
반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[백준 / BOJ] C++ 28444 HI-ARC=?  (2) 2023.08.17
[백준 / BOJ] C++ 28703 Double It  (0) 2023.08.15
[백준 / BOJ] C++ 28701 세제곱의 합  (0) 2023.08.15
[백준 / BOJ] C++ 17430 가로등  (4) 2023.08.12
[백준 / BOJ] C++ 27965 N결수  (0) 2023.08.12