분류 전체보기

    [테트리스][C++] 현재 상황

    보호되어 있는 글입니다.

    [C++] 스마트 포인터 클래스

    안녕하세요, katte입니다. 이번 글에서는 스마트 포인터 클래스, auto_ptr, unique_ptr, shared_ptr에 대해서 정리하도록 하겠습니다. 포인터는 C와 C++의 강력한 도구이면서 동시에 고질적인 문제가 됩니다. 특히 동적 할당된 메모리를 참조하는 포인터는 메모리 누수의 문제를 떠안고 있죠. 이를 해결하기 위한 것이 스마트 포인터 클래스입니다. 스마트 포인터는 객체가 scope를 벗어나 소멸하게 될 때, 소멸자를 호출하는 것을 이용합니다. 스마트 포인터 클래스에는 힙에 할당된 주소를 저장할 포인터 멤버가 존재하고, 클래스의 객체가 소멸할 때 소멸자를 통해 delete를 호출하여 메모리를 해제합니다. 스마트 포인터에는 auto_ptr, unique_ptr, shared_ptr이 있으며,..

    [백준][알고리즘][C++] 2750 수 정렬하기, 버블 정렬, 삽입 정렬

    https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 1) 버블 정렬 알고리즘(Bubble sorting) 버블 정렬은 인접한 두 원소를 비교하여 자리를 교환해가는 알고리즘이다. 시간 복잡도는 O(n^2) (이중 for루프) #include #include using std::vector; int main() { int n; std::cin >> n; vector arr(n); for (int i = 0; i > ar..

    [C++] value categories

    https://en.cppreference.com/w/cpp/language/value_category Value categories - cppreference.com Each C++ expression (an operator with its operands, a literal, a variable name, etc.) is characterized by two independent properties: a type and a value category. Each expression has some non-reference type, and each expression belongs to exactly one of th en.cppreference.com C++의 value는 크게 glvalue와 rva..

    [C++] rvalue 참조와 move semantics

    안녕하세요, katte입니다. 이번 글에서는 드디어 미루고 미루던 rvalue 참조와 move semantics에 대해 정리해보려고 합니다. 원래 나중에 하려고 계속 미루고 있었는데 이 내용을 알아야 이해할 수 있는 내용이 자꾸 나오길래 그냥 빨리 정리해버리기로 했습니다ㅎㅎ.. rvalue는 우측값, 즉 대입 연산에서 오른쪽에 오는 값으로, 주소를 얻어내기 위해 주소 연산자&를 사용할 수 없는 값을 의미합니다. 예를 들자면 리터럴 상수(C스타일 문자열은 포함X), 레퍼런스가 아닌 함수의 리턴값, x+y와 같은 expression이 있습니다. 반대로 lvalue는 주소를 얻어내기 위해 주소 연산자를 사용할 수 있는 값이며, 이름이 있는 대부분의 객체가 포함됩니다. 가장 흔하게는 변수가 있을 것입니다. 우리..

    [백준][C++] 2738 행렬 덧셈

    https://www.acmicpc.net/problem/2738 2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net 2차원 배열을 이용하는 문제이다. n과 m의 범위가 100 이하이므로 굳이 동적할당을 할 필요는 없지만 연습을 위해 동적할당을 써 보았다. 2차원 배열은 배열의 배열로 이해할 수 있다는 점을 이용하여 구현할 수 있다. 즉 포인터 배열을 만들고, 각각의 원소들이 또 다른 배열을 가리키도록 하여 구현할 수 있다. (물론 실제 2차원 배열의 메모리는 연속된 주소 값을 갖기 때문에 이렇게 ..

    [C++][테트리스] 대략적인 계획

    보호되어 있는 글입니다.

    [백준] [C++] 11729 하노이 탑 이동 순서

    https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 재귀를 이용하는 문제다. 단계별 풀기를 하고 있는데, 아직 이 문제를 풀 순서는 아니지만 재귀 배운 김에 풀어봤다. 이 문제의 핵심 포인트는 다음과 같다. n개의 원반을 A에서 C로 옮기기 위해서는 n-1개의 원반을 A에서 B로 옮기고, 가장 밑의 원반을 A에서 C로 옮긴 후, 다시 n-1개의 원반을 B에서 C로 옮겨야 한다. 따라서 재귀로 귀결되는 것이다. 사실 이 문제는 너무 유명..