0LL 이라고 쓰면 long long 으로 0취급
0 으로 그냥 쓰면 그냥 int로 0 취급

vector나 set같은 컨테이너들 인자 모두 출력하는 방법으로
포문 돌리는 방법도 있지만 
#inlucde <fmt/ranges.h>
vector<string> v = {"hi", "hello", "abc"};
fmt::print("{}", v);
처럼도 쓸 수 있음
위처럼 쓰면 {"hi", "hello", "abc"} 로 출력되는 듯 함


보이어-무어 알고리즘을 쓰면 
문자열에서 그냥 find를 쓰는것보다 훠얼씬 빠르다고 함

#include <algorithm>
#include <functional>
#include <iostream>
#include <string>

int main() {
  std::string s =
    "I believe I can fly I believe I can fly I believe I can fly (woo)";

  std::string needle = "believe";

  auto it =
    std::search(s.begin(), s.end(),
                std::boyer_moore_searcher(needle.begin(), needle.end()));

  if (it != s.end()) {
    std::cout << needle << " found at " << std::distance(s.begin(), it)
              << std::endl;
  } else {
    std::cout << needle << " not found " << std::endl;
  }
}


문자열에서 맨 앞의 연속된 0을 지우고 싶다면 
s.remove_prefix(std::min(s.find_first_not_of("0"), s.size())); 을 쓰면 되고
맨 뒤는
s.remove_suffix(std::min(s.size() - s.find_last_not_of("0") - 1, s.size()));으로 하면 됨



class와 func은 CamelCase처럼 대문자로 띄어쓰기 표시하고
변수나 필드들은 snake_case처럼 _로 띄어쓰기 표시하는걸로 통일하면
이름만 보고도 저게 변수인지 함수인지 구분하기 좋다