전체 글
[C/C++] 주석으로 함수 매개변수 설명 추가하는 방법
설명서 태그 태그는 메서드의 매개 변수 중 하나를 설명하기 위해 메서드 선언에 대한 주석에서 사용해야한다. /// Used to indicate status. // xml_param_tag.cpp // compile with: /clr /doc /LD // post-build command: xdcmake xml_param_tag.dll /// Text for class MyClass. public ref class MyClass { /// Used to indicate status. void MyMethod(int Int1) { } }; doxygen style // @param val 값 void Fn(int val) { } (C++ 설명서 주석) | Microsoft Learn
[LeetCode] Remove All Adjacent Duplicates in String II
string removeDuplicates(string str, int k) { stack s; auto begin = str.begin(), end = str.end(); while (begin != end) { auto ch = *begin; if (!s.empty()) { auto& top = s.top(); if (top.first != ch) s.push({ ch, 1 }); else top.second++; if (top.second == k) s.pop(); } else s.push({ ch, 1 }); begin++; } str.clear(); while (!s.empty()) { auto top = s.top(); for (int i = 0; i < top.second; i++) str...
세션의 생성과 관리
세션이란, 멀티 player 게임의 1 개의 인스턴스이다. 1 개의 세션에는 동시에 플레이 하는 복수의 사용자가 존재해, 각각이 자신의 컴퓨터상에 게임 클라이언트를 가지고 있다. player란, 게임안의 엔티티여, 각 게임에서 정의한다. 각 사용자가, 1 개의 게임에 복수의player를 가지는 경우도 있다. 다만, 게임 애플리케이션은, 개별의 Microsoft® DirectPlay® 인터페이스 또는 각 player의 개체를 사용해, 이러한 player를 애플리케이션 자신으로 관리해야 한다. 세션 생성의 최초의 순서는, 사용자 그룹의 수집이다. 이 때문에는, 2 개의 기본적 방법이 있다. 많은 게임 세션은, 리모트 컴퓨터로 실행되는로비 애플리케이션에 의해 준비된다. 이 방법은, 많은 인터넷 베이스의 게임에..
[LeetCode] Remove All Adjacent Duplicates In String
string removeDuplicates(string str) { stack s; auto begin = str.begin(), end = str.end(); while (begin != end) { auto ch = *begin; if (!s.empty() && s.top() == ch) s.pop(); else s.push(ch); begin++; } str.clear(); while (!s.empty()) { str.push_back(s.top()); s.pop(); } reverse(str.begin(), str.end()); return str; }
[LeetCode] Excel Sheet Column Number
int titleToNumber(string columnTitle) { int sum = 0, time = 1; // A 대문자 아스키 코드는 65부터 시작 while (!columnTitle.empty()) { int val = columnTitle.back() - 64; if (sum == 0) sum += val; else sum += pow(26, time++) * val; columnTitle.pop_back(); } return sum; }
sort() 함수에서 쓰여지는 정렬 알고리즘 (Intro 인트로, Tim 팀)
일반적으로 시간 복잡도를 기준으로 sort 알고리즈므이 성능을 판단하지만, 실제로는 지역성이나 실 데이터의 분포 등 고려할 것들이 많다. 언어마다 default로 사용하는 sort들이 정해져있다. C++ : Intro Sort c++의 std::sort로 사용되고 퀵 정렬, 삽입 정렬, 힙 정렬로 이루어져 있다. 특징 기본적으로 퀵 정렬로 시작을 한다. 정렬할 element가 Threshold(일반적으로 16) 미만일 때는, 삽입 정렬로 수행된다. 재귀 depth가 정렬되는 element 수(n)과 비교해 log N보다 많아지면 힙 정렬로 수행된다. 퀵, 삽입 정렬은 지역성의 이점을 얻는 알고리즘(배열의 경우)으로 유명하다. 특히, 삽입 정렬은 참조 지역성을 아주 잘 만족한다고 한다. 삽입 정렬의 경우 ..
[C] 함수의 포인터 / 배열 매개변수
함수의 매개변수로 배열 사용법 배열을 함수의 전달 인자로 사용하려면 배열의 변수명은 첫 번째 원소의 주소값이기 때문에 매개변수의 타입은 포인터가 되어야 한다. void 함수명(int* arr) { } 둘 다 동일한 의미를 지닌다 void 함수명(int* arr) { } void 함수명(int arr[]) { } #include #define Size 10 void Arrprint(int *Arr); void Arrprint2(int Arr[]); int main () { int i_arr[Size] = {1,2,3,4,5,6,7,8,9,10}; Arrprint(i_arr); Arrprint2(i_arr); return 0; } void Arrprint(int *Arr){ for(int i = 0; i
[C++] atoi (char > int 형변환) / stoi (string > int 형변환) 함수 구현
음수 표기하고자 하면 첫번째 원소가 - 와야됨. int Atoi(char* str) { int sign = 1, data = 0; char cur = *str; if (cur == '\n') return 0; if (cur == '-') sign = -1; while (cur != '\0') { cur = *str++; if (cur >= '0' && cur = '0' && cur
[LeetCode] Evaluate Reverse Polish Notation
알고리즘 풀땐 switch보단 if를 선호한다고 들었는데 사칙연산으로 인해 어쩔 수 없이 사용함. int evalRPN(vector& tokens) { stack s; for (const auto& ch : tokens) { int ans = 0; // 연산 if (!isdigit(ch[0]) && ch.size() == 1) { int n2 = s.top(); s.pop(); int n1 = s.top(); s.pop(); switch (ch[0]) { case '+': ans += n1 + n2; break; case '-': ans += n1 - n2; break; case '*': ans += n1 * n2; break; case '/': ans += n1 / n2; break; } s.push(..