목록PS (182)
득이공간

해당 게시물은 프로텍 미디어의 'Effective C++'를 읽고학습한 내용을 개인적으로 요약한 글입니다.📌 목차 - 6장. 상속, 그리고 객체 지향 설계6-1. public 상속 모형은 반드시 “is-a”를 따르도록 만들자6-2. 상속된 이름을 숨기는 일은 피하자6-3. 인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자6-4. 가상 함수 대신 쓸 것들도 생각해 두는 자세를 시시때때로 길러 두자6-5. 상속받은 비가상 함수를 파생 클래스에서 재정의하는 것은 절대 금물!6-6. 어떤 함수에 대해서도 상속받은 기본 매개변수 값은 절대로 재정의하지 말자6-7. “has-a” 혹은 “is-implemented-in-terms-of”를 모형화할 때는 객체 합성을 사용하자6-8. private 상속은..

해당 게시물은 프로텍 미디어의 'Effective C++'를 읽고학습한 내용을 개인적으로 요약한 글입니다.📌 목차 - 5장. 구현5-1. 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자5-2. 캐스팅은 절약, 또 절약! 잊지 말자5-3. 내부에서 사용하는 객체에 대한 “핸들”을 반환하는 코드는 되도록 피하자5-4. 예외 안전성이 확보되는 그날 위해 싸우고 또 싸우자!5-5. 인라인 함수는 미주알고주알 따져서 이해해 두자5-6. 파일 사이의 컴파일 의존성을 최대로 줄이자📌 5-1. 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자변수 정의는 늦출 수 있는 데까지 늦추자. 프로그램이 더 깔끔해지며 효율도 좋아진다.📌 5-2. 캐스팅은 절약, 또 절약! 잊지 말자다른 방법이 가능하다면 캐..

해당 게시물은 프로텍 미디어의 'Effective C++'를 읽고학습한 내용을 개인적으로 요약한 글입니다.📌 목차 - 4장. 설계 및 선언4-1. 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자4-2. 클래스 설계는 타입 설계와 똑같이 취급하자4-3. ‘값에 의한 전달’ 보다는 ‘상수객체 참조자에 의한 전달’ 방식을 택하는 편이 대개 낫다4-4. 함수에서 객체를 반환해야 할 경우에 참조자를 반환하려고 들지 말자4-5. 데이터 멤버가 선언될 곳은 private 영역임을 명심하자4-6. 멤버 함수보다는 비멤버 비프렌드 함수와 더 가까워지자4-7. 타입 변환이 모든 매개변수에 대해 적용되어야 한다면 비멤버 함수를 선언하자4-8. 예외를 던지지 않는 swap에 대한 지원도 생각해 보자📌 ..

해당 게시물은 프로텍 미디어의 'Effective C++'를 읽고학습한 내용을 개인적으로 요약한 글입니다. 📌 목차 - 3장. 자원 관리3-1. 자원 관리에는 객체가 그만!3-2. 자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자3-3. 자원 관리 클래스에서 관리되는 자원은 외부에서 접근할 수 있도록 하자3-4. new 및 delete를 사용할 때는 형태를 반드시 맞추자3-5. new로 생성한 객체를 스마트 포인터에 저장하는 코드는 별도의 한 문장으로 만들자📌 3-1. 자원 관리에는 객체가 그만! 자원 누출을 막기 위해, 생성자 안에서 자원을 획득하고 소멸자에서 그것을 해제하는 RAII 객체를 사용하자.일반적으로 널리 쓰이는 RAII 클래스는 tr1::shared_ptr 그리고 auto_ptr이..

해당 게시물은 프로텍 미디어의 'Effective C++'를 읽고학습한 내용을 개인적으로 요약한 글입니다. 📌 목차 - 2장. 생성자, 소멸자 및 대입 연산자2-1. C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자2-2. 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자2-3. 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자2-4. 예외가 소멸자를 떠나지 못하도록 붙들어 놓자2-5. 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자2-6. 대입 연산자는 *this의 참조자를 반환하게 하자2-7. operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자2-8. 객체의 모든 부분을 빠짐없이 복사하자📌 2-1. C++가 ..

해당 게시물은 프로텍 미디어의 'Effective C++'를 읽고학습한 내용을 개인적으로 요약한 글입니다. 📌 목차 - 1장. C++에 왔으면 C++의 법을 따릅시다1-1. C++를 언어들의 연합체로 바라보는 안목은 필수1-2. #define을 쓰려거든 const, enum, inline을 떠올리자1-3. 낌새만 보이면 const를 들이대 보자!1-4. 객체를 사용하기 전에 반드시 그 객체를 초기화하자📌 1-1. C++를 언어들의 연합체로 바라보는 안목은 필수C++를 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다. 그 경우란, 바로 C++의 어떤 부분을 사용하느냐다.C++를 구성하는 네 가지 부분은 C, 객체 지향 개념의 C++, 템플릿 C++, STL이다.📌 1-2. #define을 쓰려..

문제풀이 다익스트라 알고리즘을 이용해서 푸는 문제입니다.(1,1) -> (n,m)으로 이동하되, 인접 노드 탐색 시 priority_queue(최소힙) 자료구조를 이용해서큐에 들어오는 노드 중 벽을 부수는 비용이 가장 적은 노드부터 탐색하도록 했습니다.그리고 인접 노드의 최소비용 배열의 값을 갱신해주도록 해서 풀었습니다.코드#include #include #include #include using namespace std;typedef pair p;typedef pair pp;const int Inf = INT_MAX;const int DX[4] = { -1, 0, 1, 0 };const int DY[4] = { 0, -1, 0, 1 };int N, M;bool IsWall[100][100];int Co..

문제풀이 백트래킹을 이용해서 푸는 문제입니다.먼저 각 학생의 친구 수를 저장하는 배열과모든 학생에 대해서 친구인지 아닌지를 저장하는 2차원 배열을 생성했습니다.그리고 백트래킹을 이용해서 1부터 N번의 학생까지 K-1 이상의 친구를 보유한 학생을 선택해서K명을 선택했을 때 모두 서로 친구라는 조건이 만족하면 출력 & 종료하도록 했습니다. 코드#include using namespace std;int N, K, F;int FN[901];bool Friend[901][901];int Sel[62];bool Check(){ for (int i = 0; i N) { return; } if (FN[Num] >= K - 1) { Sel[Idx] = Num; DFS(Idx + 1, Num + 1); } DFS(..

문제풀이 다익스트라 알고리즘을 이용해서 푸는 문제입니다.각각의 노드 사이의 이동 시간을 구해서 저장해주고 나면나머지는 일반적인 다익스트라 유형의 문제의 풀이와 동일합니다.각 노드 사이의 이동 시간을 구할 때 시작 노드를 출발 지점으로 놓으면 도착 지점까지 걸어가는 시간으로 구해야 합니다.시작 노드를 제외한 나머지 노드에서 출발 할때는 걸어가는 시간과 대포를 이용한 시간 중 작은 값으로 저장해주면 됩니다.코드#include #include #include #include #include using namespace std;const double Inf = INT_MAX;typedef pair p;typedef pair n;int S, E, N;p Point[102];list Neighbor[102];dou..

15683번: 감시스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감www.acmicpc.net 문제풀이 구현할 것이 많은 시뮬레이션 & 브루트포스 & 백트래킹 유형의 문제입니다. 카메라의 개수는 많지 않기 때문에, 각 카메라의 방향을 완전탐색(브루트포스 & 백트래킹)으로모든 각도에서 지정해보고 그 중 사각지대의 최소값을 구하면 됩니다. 사각지대를 구하기 전에 각 카메라의 방향에 따른 사무실의 상태를 구할 때 많은 구현이 필요합니다.각 카메라가 사무실을 스캔할 때, 카메라의 종류에 따라 먼저 분류하고지정된 스캔 방향, 횟수에 따라서 사무실의 상태를 구..