본문 바로가기

728x90

C++

[C++][Effective C++] 13~17. 자원 관리 [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 05~12 항목으로 아래와 같다. 13. 자원 관리에는 객체가 그만! 14. 자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자 15. 자원 관리 클래스에서 관리되는 자원은 외부에서 접근할 수 있도록 하자 16. new 및 delete를 사용할 때는 형태를 반드시 맞추자 17. new로 생성한 객체를 스마트 포인터에 저장하는 코드는 별도의 한 문장으로 만들자 요약 13. 자원 관리에는 객체가 그만! 자원이 항상 해제되도록 만들 방법은, 자원을 객체에 넣고 그 자원 해제를 소멸자가 맡도록 하며, 그 소멸자는 실행 제어가 func(자원을 생성하게 된 함수)를 떠날 때 호출하게 하는 것이다. 자원을 객체에.. 더보기
[백준알고리즘] 4796번: 캠핑 -C++ [백준알고리즘] 4796번: 캠핑 -C++ 4796번: 캠핑 (acmicpc.net) 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 그리디의 다른 쉬운 문제를 풀었다. 이 문제도 예전에 풀었던 ATM 문제와 같이 SJF 방식으로 풀면 된다. 이게 그리디지 ㅋㅋ 하면서 쉬워서 기분 좋았다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 어떤 경우에서든 연속된 \(P\) 일 중에 최대 \(L\) 일만 사용할 수 있어야 한다. 즉, \(V+0 \sim V+P+0\) 까지도 \(L\) 일만 사.. 더보기
[C++][Effective C++] 05~12. 생성자, 소멸자 및 대입 연산자 [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 05~12 항목으로 아래와 같다. 05. C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자 06. 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자 07. 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 08. 예외가 소멸자를 떠나지 못하도록 붙들어 놓자 09. 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자 10. 대입 연산자는 *this의 참조자를 반환하게 하자 11. operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자 12. 객체의 모든 부분을 빠짐없이 복사하자 요약 05. C++가 은근슬쩍 만들어 호출해 버.. 더보기
[백준알고리즘] 16953번: A → B -C++ [백준알고리즘] 16953번: A → B -C++ 16953번: A → B (acmicpc.net) 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 그리디 느낌이 나는 쉬운 문제를 찾다가 발견했다. 어려운 문제는 아니었으나, 문제 풀이를 생각했을 때 직관적으로 그리디 하게 풀 수 있겠다고 느꼈다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 정수 A에서 B로 바꿔야 한다. 아래의 두 가지 경우를 하나씩 사용해 최종적으로 B로 바꿔야 한다. 2를 곱한다. 가장 오른쪽 수에 1을 추가한다. (자리수 이동) 즉, 예제와 같이 A와 B가 각각 2와 162라면, 아래와 같이 변경할 수 있다. 최종적으로 4개의 연산이 요구된다... 더보기
[백준알고리즘] 1439번: 뒤집기 -C++ [백준알고리즘] 1439번: 뒤집기 -C++ 1439번: 뒤집기 (acmicpc.net) 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 그리디 알고리즘을 풀어보고 싶어서, 안 푼 그리디 문제 중에 그나마 쉬운거부터 골랐다. 쉽게 풀긴 했는데, 이게 그리디인지는 느낌이 안 오는 문제였다. 다른 문제를 더 풀어봐야 할 것 같다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제풀이 0과 1로 이루어진 문자열이 주어진다. 이때 0은 1로, 1은 0으로 뒤집을 수 있다. 모두 같은 숫자로 이루어진 문자열을 .. 더보기
[디자인패턴][생성패턴] 팩터리 Factory - C++ [모던 C++ 디자인 패턴] 책을 바탕으로 공부하는 내용을 정리한 내용이다. Factory pattern 두 개의 GoF(Gang of Four) 패턴, 팩터리 메서드와 추상 팩터리를 동시에 알아본다. 이 두 패턴은 긴밀하게 연관이 되어있다. 시나리오 직교 좌표계의 좌표점 정보를 저장한다고 가정하자. 다음과 같이 쉽게 구현할 수 있을 것이다. struct CPoint { CPoint(const float x, const float y) : m_x(x), m_y(y) {} float m_x, m_y; //< 직교 좌표계의 좌표 } 여기서 극좌표계로 좌표점 정보를 저장해야 한다면 어떻게 할까? 쉽게 다음과 같이 극좌표계용 생성자를 추가할 것이다. CPoint(const float r, const float .. 더보기
[백준알고리즘] 10942번: 팰린드롬? -C++ [백준알고리즘] 10942번: 팰린드롬? -C++ 10942번: 팰린드롬? (acmicpc.net) 10942번: 팰린드롬? 총 M개의 줄에 걸쳐 홍준이의 질문에 대한 명우의 답을 입력으로 주어진 순서에 따라서 출력한다. 팰린드롬인 경우에는 1, 아닌 경우에는 0을 출력한다. www.acmicpc.net 이전에 파이썬으로 풀다가 포기한 흔적이 있는 문제다. 문제를 보고 시간제한 있는 걸 보자마자 싸한 걸 느꼈다. 그래서 쉽게 구하는 것부터 생각하면서, 어떤 방법으로 문제를 풀어야 할지 고민했다. 그런데 생각보다 쉽게 풀렸다. 그래도 이전 파이썬 오답들이 정답 비율에 한몫했을 것 같다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 먼저, 팰린드롬은 앞으로 읽나 뒤로 읽나 똑같은 말이다. .. 더보기
[C++][Effective C++] 01~04. C++에 왔으면 C++의 법을 따릅시다. [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 01~04 항목으로 아래와 같다. 01. C++를 언어들의 연합체로 바라보는 안목은 필수 02. #define을 쓰려거든 const, enum, inline을 떠올리자 03. 낌새만 보이면 const를 들이대 보자! 04. 객체를 사용하기 전에 반드시 그 객체를 초기화하자 요약 01. C++를 언어들의 연합체로 바라보는 안목은 필수 기존의 C++은 C 언어에 OOP 몇 가지를 결합한 형태에 불과했다. 그에 따라 처음의 이름 역시 "C with Classes"였다. 하지만, 시간이 지남에 따라 C++은 점차 과감하게 변화했다. Exception, Template, STL이 그러한 변화의 산출물이다. 이제 .. 더보기

728x90