C++ 6

DFS(깊이 우선 탐색), BFS(너비 우선 탐색)

DFS(Depth-First Search, 깊이 우선 탐색) DFS는 깊이 우선 탐색이라고도 부르며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘입니다. DFS는 스택 자료구조(혹은 재귀함수)를 이용하며, 구체적인 동작 과정은 다음과 같습니다. 1. 탐색 시작 노드를 스택에 삽입하고 방문 처리를 합니다. 2. 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문 처리합니다. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼냅니다. 3. 더 이상 2번의 과정을 수행할 수 없을 때까지 반복합니다. - C++ 재귀 함수를 통한 간단 DFS 구현 예제 #include using namespace std; bool visted[9]; vector graph..

그리디(Greedy) 알고리즘 & 구현 연습하기 (C++)

그리디 알고리즘 -> 현재 상황에서 지금 당장 좋은 것만 고르는 방법 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력 요구 그리디 알고리즘은 최적의 해를 보장할 수없을 때가 많음 탐욕법으로 얻은 해가 최적의 해가 되는 상황에서 이를 추론할 수 있어야 풀리도록 출제됨 문제 예시 문제1 - 당신은 음식점의 계산을 도와주는 점원입니다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리동전이 무한히 존재한다고 가정합니다. 손님에게 거슬러 주어야 할 돈이 N원일 때 거슬러 주어야 할 동전의 최소 개수를 구하세요. 단, 거슬러 줘야 할 돈 N은 항상 10의 배수입니다. - N은 1,260일 때의 풀이 #include using namespace std; int n = 1260; in..

(C++) 클래스의 상속 (부모 클래스, 자식 클래스)

클래스 상속 상속(inheritance)은 추상화, 캡슐화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나입니다. 상속은 사용자에게 높은 수준의 코드 재활용성을 제공하며, 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련합니다. C++에서 클래스 상속이란 기존에 정의되어 있는 클래스의 모든 멤버 변수와 멤버 함수를 물려받아, 새로운 클래스를 작성하는 것을 의미합니다. 이때 기존에 정의되어 있던 클래스를 기초 클래스 또는 부모 클래스, 상위 클래스라고도 합니다. 그리고 상속을 통해 새롭게 작성되는 클래스를 파생 클래스 또는 자식 클래스, 하위 클래스라고도 합니다. 이와 같은 클래스의 상속은 다음과 같은 장점을 가집니다. 1. 기존에 작성된 클래스를 재활용할 수 있습니다. 2..

C++ 2022.09.03

(C++) 정적 멤버와 상수 멤버(static, const)

정적 멤버 C++에서 정적 멤버란 클래스에는 속하지만, 객체 별로 할당되지 않고 클래스의 모든 객체가 공유하는 멤버를 의미합니다. 멤버 변수가 정적(static)으로 선언되면, 해당 클래스의 모든 객체에 대해 하나의 데이터만이 유지 관리됩니다. static 멤버 변수는 클래스 영역에서 선언되지만, 정의는 파일 영역에서 수행됩니다. static 멤버 변수는 '클래스 변수'라고도 하는데 일반적인 멤버 변수와 달리 클래스당 하나씩만 생성되기 때문입니다. 이러한 정적 멤버 변수는 외부 연결(external linkage)을 가지므로, 여러 파일에서 접근할 수 있습니다. 정적 멤버 변수에도 클래스 멤버의 접근 제한 규칙이 적용되므로, 클래스의 멤버 함수나 friend만이 접근할 수 있습니다. 하지만 정적 멤버 변..

C++ 2022.09.03