[BaekJoon 28702][๐ŸŸค1] FizzBuzz

Date :   Updated :

โ“ ๋ฌธ์ œ

๋ฐฑ์ค€ 28702 - โ€œFizzBuzzโ€

๐ŸŽฏ ๋‚œ์ด๋„

Bronze ๐ŸŸค1

๐Ÿง  ํ’€์ด

1. ๋‚ด ํ’€์ด (๋ฌธ์ž์—ด + ์ˆ˜ํ•™)

- ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • string, Mathematics

- ์„ค๋ช…

๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•œ ์ˆซ์ž ํŒ๋ณ„๋กœ ํ‘ผ ๋ฐฉ์‹์ด๋‹ค.

3์˜ ๋ฐฐ์ˆ˜์™€ 5์˜ ๋ฐฐ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ˆซ์ž๊ฐ€ ๋‚˜์˜จ๋‹ค๋ฉด, 3๊ฐœ์˜ ์ถœ๋ ฅ์ด ๋‚˜์™”์„ ๋•Œ ๋ฌด์กฐ๊ฑด ํ•˜๋‚˜ ์ด์ƒ์€ ์ •์ˆ˜๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

์ด๋Ÿฐ ๊ทœ์น™์„ ์ด์šฉํ•ด์„œ, ์ž…๋ ฅ์— ๋Œ€ํ•ด ๊ฐ๊ฐ์˜ ์ž…๋ ฅ ๋ฌธ์ž์—ด์ด ์ •์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•ด๊ฒฐํ–ˆ๋‹ค.

๋ฌธ์ž์—ด์„ ์ •์ˆ˜ ํŒ๋ณ„ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ๊ณผ ์ž…๋ ฅ ๋ฐ˜๋ณต๋ฌธ ๋ฐ–์— ์—†์œผ๋ฏ€๋กœ ์‚ฌ์‹ค์ƒ O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์ด๋‹ค.

- ์ฝ”๋“œ

๋‚ด ํ’€์ด ์ฝ”๋“œ
#include <iostream>

#include <string>

#include <cctype>


using namespace std;

// ๋ฌธ์ž์—ด์ด ์ˆซ์ž์ธ์ง€ ํŒ๋ณ„ํ•˜๋Š” ํ•จ์ˆ˜
bool IsNumber(const string& strInput);

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    string arrStr[3]{};
    for(int i = 0; i < 3; ++i)
    {
        cin >> arrStr[i];
    }

    int iVal{}, iIndex{};
    for(int i = 0; i < 3; ++i)
    {
        if(IsNumber(arrStr[i]))
        {
            // ์ˆซ์ž ์ฐพ์œผ๋ฉด iVal์— ์ €์žฅ, iIndex์— ์ธ๋ฑ์Šค ์ €์žฅ
            iVal = stoi(arrStr[i]);
            iIndex = i;
        }
    }

    // ๋‹ค์Œ์— ์˜ฌ ์ˆซ์ž ๊ณ„์‚ฐ
    int iNext{ iVal + 3 - iIndex };

    // 3์˜ ๋ฐฐ์ˆ˜ && 5์˜ ๋ฐฐ์ˆ˜
    if(iNext % 15 == 0)
    {
        cout << "FizzBuzz";
    }
    // 3์˜ ๋ฐฐ์ˆ˜
    else if(iNext % 3 == 0)
    {
        cout << "Fizz";
    }
    // 5์˜ ๋ฐฐ์ˆ˜
    else if(iNext % 5 == 0)
    {
        cout << "Buzz";
    }
    // ๋‘˜ ๋‹ค X
    else
    {
        cout << iNext;
    }

    return 0;
}

bool IsNumber(const string& strInput)
{
    for(const char ch : strInput)
    {
        // isdigit์œผ๋กœ ๋ฌธ์ž๊ฐ€ ์ˆซ์ž์ธ์ง€ ํŒ๋ณ„ -> ๋ฌธ์ž ๊ฒ€์‚ฌ์ด๋ฏ€๋กœ ์•ˆ์ „ํ•˜๊ฒŒ unsigned char๋กœ ์บ์ŠคํŒ…
        if(!isdigit(static_cast<unsigned char>(ch)))
        {
            return false;
        }
    }

    // ๋นˆ ๋ฌธ์ž์—ด์ด๋ฉด false ๋ฆฌํ„ด
    return !strInput.empty();
}

๐Ÿ’ญ ํ›„๊ธฐ

์ฒ˜์Œ์—” ์–ด๋–ค ๋ณต์žกํ•œ ๊ทœ์น™์ด ์žˆ์„๊นŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€๋ ธ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ž์˜ ์ˆซ์ž ํŒ๋ณ„์„ ๋„์™€์ฃผ๋Š” isdigit ํ•จ์ˆ˜๋ฅผ ์•Œ์•„๋‘๋ฉด ํŽธํ•  ๊ฒƒ ๊ฐ™๋‹ค!

Comments