Skip to content
/ CPP Public

Learning modern C++ concepts ( C++14, C++17, C++20 )

Notifications You must be signed in to change notification settings

doorcs/CPP

Repository files navigation

문제에서 변수명을 주는 경우에는 대소문자까지 구분해서 그대로 쓰기!!! (N, M, K 등등)

컨테이너 이름은 원소의 타입을 바로 알 수 있게 짓기

vector<int> vi;
pair<int, int> pii;
vector<pair<int, string>> vpis;


  • 테스트케이스 개수 처리:

    int N;
    cin >> N;
    while (N--) { // 1. while문 사용
    for (int i{}; i < N; i++) { // 2. for문 사용

  • 그래프 문제 2차원 배열: brd[y][x] arr 쓰지 말고 brd 쓰기! 이때 인덱스는 반드시 [y][x]순으로 하기!!

  • 방문여부 마킹 배열: vst

  • 이동방향 관련 변수들 (4방향일땐 1 0 -1 0, 0 1 0 -1):

    int dy[] = {1, 1, 1, 0, -1, -1, -1, 0};
    int dx[] = {-1, 0, 1, 1, 1, 0, -1, -1}; // == std::ranges::rotate(dy, dy+6); | std::rotate(dy, dy+6, dy+8)
    for (int i{}; i < 8; i++) { int ny = y + dy[i]; int nx = x + dx[i]; }

  • 앞, 뒤: fr, rr

  • 중간: mid, middle, center

  • 출발지: src

  • 목적지: dst

  • 현재: cur, curr

  • 이전: prev, prv

  • 다음: next, nxt

  • 결과: ans, res, ret(return value!)

  • 합계: tot, sum

  • 평균: avg

  • 임시변수: tmp, temp, t


  • 함수로 분리한 코드에서 쓰는 변수들은 전역으로 선언해두기!
    함수 호출시마다 초기화가 필요하다면 memset()이나 std::fill() 사용
    • memset(begin, {0 또는 -1}, length);

      memset()은 두번째 파라미터를 unsigned char형(1바이트)으로 처리!!
      2바이트 이상을 채울때 sign extention을 하는게 아니라 바이트를 복사 하기 때문에, 0과 -1에서만 안전

    • std::fill(begin, end, value); == std::ranges::fill(container, value);

      모든 value에 범용으로 사용 가능!

About

Learning modern C++ concepts ( C++14, C++17, C++20 )

Topics

Resources

Stars

Watchers

Forks

Languages