C++에서 Fizz Buzz 솔루션 구현
이 기사에서는 C++로 Fizz Buzz 솔루션을 구현하는 방법을 소개합니다.
리터럴 값과 함께 반복 방법을 사용하여 C++에서 Fizz Buzz 솔루션 구현
Fizz Buzz는 교육 사이트에서 프로그래밍 연습이나 때로는 인터뷰에 사용되는 사소한 문제입니다. 3
및5
의 배수가 각각Fizz
및Buzz
문자열로 대체되어야한다는 점을 제외하고는 본질적으로1
에서100
까지의 숫자를 콘솔에 인쇄하는 것으로 요약됩니다. 또한15
의 배수에 대한 규칙이 있으며FizzBuzz
로 인쇄되어야합니다. 이 작업은 100 정수 범위를 반복하고4
다른 케이스에 대한if
조건을 포함하는 간단한 루프 문으로 해결할 수 있습니다. 숫자가 주어진 정수의 배수인지 확인하려면 모듈러스 연산자 인%
를 사용해야합니다.
#include <iostream>
using std::cout;
using std::endl;
constexpr int COUNT = 100;
int main() {
for (int i = 1; i <= COUNT; ++i) {
if (i % 3 == 0)
cout << "Fizz, ";
else if (i % 5 == 0)
cout << "Buzz, ";
else if (i % 15 == 0)
cout << "FizzBuzz, ";
else
cout << i << ", ";
}
return EXIT_SUCCESS;
}
출력:
1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, Fizz, 31, 32, Fizz, 34, Buzz, Fizz, 37, 38, Fizz, Buzz, 41, Fizz, 43, 44, Fizz, 46, 47, Fizz, 49, Buzz, Fizz, 52, 53, Fizz, Buzz, 56, Fizz, 58, 59, Fizz, 61, 62, Fizz, 64, Buzz, Fizz, 67, 68, Fizz, Buzz, 71, Fizz, 73, 74, Fizz, 76, 77, Fizz, 79, Buzz, Fizz, 82, 83, Fizz, Buzz, 86, Fizz, 88, 89, Fizz, 91, 92, Fizz, 94, Buzz, Fizz, 97, 98, Fizz, Buzz,
커스텀 클래스를 사용하여 C++에서 Fizz Buzz 솔루션 구현
또는 주어진 정수 맵과 해당 문자열을 저장하는 클래스를 구현 한 다음 내장 함수를 호출하여 값을 콘솔에 인쇄 할 수 있습니다. 이 방법은보다 일반적이며 문제 정의를 확장하는 데 사용할 수 있습니다. FizzBuzz
클래스에는map<int, string>
유형의 데이터 멤버 하나와 맵에 대한 참조를 사용하는 생성자가 있습니다. checkFizzBuzz
는 매개 변수를 취하지 않고 두 개의 중첩 루프를 실행하여1-100
범위의 각 숫자를 확인합니다.
#include <iostream>
#include <map>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
constexpr int COUNT = 100;
class FizzBuzz {
map<int, string> table;
public:
explicit FizzBuzz(map<int, string> &init) : table(std::move(init)) {}
void checkFizzBuzz() {
for (int i = 1; i <= COUNT; ++i) {
for (const auto &item : table) {
i % item.first == 0 ? cout << item.second << ", " : cout << i << ", ";
break;
}
}
}
};
int main() {
map<int, string> init = {{3, "Fizz"}, {5, "Buzz"}, {15, "FizzBuzz"}};
FizzBuzz fii(init);
fii.checkFizzBuzz();
return EXIT_SUCCESS;
}
이전 예제 코드에서FizzBuzz
클래스를 재 설계하는 또 다른 방법은map
자체와 같은 정수 / 문자열 쌍의 이니셜 라이저 목록을 사용하는 생성자를 정의하는 것입니다. 수업의 나머지 부분은 변경되지 않습니다. 또한COUNT
데이터 멤버를FizzBuzz
클래스 자체에 추가하고 생성자를 사용하여 초기화하여 사용자가 필요에 따라 다른 번호를 전달할 수 있습니다.
#include <initializer_list>
#include <iostream>
#include <map>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
constexpr int COUNT = 100;
class FizzBuzz {
map<int, string> table;
public:
FizzBuzz(std::initializer_list<std::pair<int, string>> init) {
for (const auto &item : init) {
table.insert(item);
}
}
void checkFizzBuzz() {
for (int i = 1; i <= COUNT; ++i) {
for (const auto &item : table) {
i % item.first == 0 ? cout << item.second << ", " : cout << i << ", ";
break;
}
}
}
};
int main() {
FizzBuzz fii = {{3, "Fizz"}, {5, "Buzz"}, {15, "FizzBuzz"}};
fii.checkFizzBuzz();
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook