일지
-
Effective C++...2일지 2022. 5. 30. 08:51
포인터의 상수 처리 포인터는 const를 어디에 붙이는지에 따라 포인터를 상수 처리할지, 데이터를 상수 처리할지 달라진다. char greeting[] = "Hello"; char* p = greeting; // 비상수 포인터, 비상수 데이터 const char* p = greeting; // 비상수 포인터, 상수 데이터 char* const p = greeting; // 상수 포인터, 비상수 데이터 const char* const p = greeting; // 상수 포인터, 상수 데이터 ※ 값의 수정이 필요한 경우가 아니면 const를 붙여두면 추후 실수를 막을 수 있다. 상수 함수의 오버로딩 클래스의 함수는 상수 여부만으로 오버 로딩이 가능하다. class TextBlock { public: ... ..
-
Effective C++...1일지 2022. 5. 27. 08:09
클래스 범위에 상수 정의 클래스 범위에만 상수를 적용할 때는 정적(static) 멤버로 만드는 게 좋다. 이때, 헤더(.h 파일)에는 선언만 존재해야 하고 정의는 구현(.cpp 파일)에 들어가야 한다. ※ 클래스 컴파일 시 상수 값이 필요한 경우는 예외로 둔다. // CostEstimate.h class CostEstimate { static const double FudgeFactor; } // CostEstimate.cpp const double CostEstimate::FudgeFactor = 1.35; 나열자 둔갑술(enum hack) 클래스 컴파일 시 상수 값이 필요한 경우 상수 대신 enum을 선언하여 사용할 수 있다. ※ enum은 쓸데없는 쓸데없는 메모리 할당이 발생하지 않는다. class..
-
JUNGOL...185일지 2022. 2. 23. 14:10
Intermediate_Coder/그래프탐색-DFS/두 로봇 문제 2018년 강원도에서 새로운 동굴이 발견되었다. 이 동굴에는 총 N개의 넓은 방이 존재하며 좁은 통로로 서로 연결되어 있는 것으로 밝혀졌다. N개의 방은 1번부터 N번까지의 번호를 붙여 1번방, 2번 방, …, N번 방으로 부른다. 통로는 정확히 N-1개가 발견되었는데, 각각 서로 다른 두 방 사이를 연결시켜주며 중간에 다른 통로와 이어지는 경우는 없다고 한다. 또한 이 통로들을 이용하여 임의의 두 방 사이를 이동하는것이 가능하며, 임의의 두 방 사이를 이동할 때 같은 통로를 두 번 이상 지나지 않는 경로는 유일한 것으로 밝혀졌다. 새로 발견된 동굴을 조사하기 위해 동굴 탐사 로봇 두 대를 이용하기로 하였다. 두 로봇은 어떤 시점이..
-
알고리즘...110일지 2022. 2. 22. 15:06
그래프 출력 구현 Graph_AdjacencyMatrix.h #pragma once #include "Graph.h" #include #include #include using std::queue; using std::stack; /// /// 그래프의 구성 요소 테스트를 위한 베이스 클래스 /// class Graph_AdjacencyMatrix : public Graph { public: Graph_AdjacencyMatrix(GraphOption graphOption = GraphOption::Undirected, size_t size = 10); virtual bool AddNode(string name); virtual void AddEdge(string from, string to, int w..
-
알고리즘...109일지 2022. 1. 27. 17:48
에지 삽입, 삭제 구현 Graph_AdjacencyMatrix.h #pragma once #include "Graph.h" #include /// /// 그래프의 구성 요소 테스트를 위한 베이스 클래스 /// class Graph_AdjacencyMatrix : public Graph { public: Graph_AdjacencyMatrix(GraphOption graphOption = GraphOption::Undirected, size_t size = 10); virtual bool AddNode(string name); virtual void AddEdge(string from, string to, int weight = 1); virtual bool RemoveNode(string name); v..
-
JUNGOL...184일지 2022. 1. 26. 16:54
Intermediate_Coder/그래프탐색-DFS/두 로봇 문제 2018년 강원도에서 새로운 동굴이 발견되었다. 이 동굴에는 총 N개의 넓은 방이 존재하며 좁은 통로로 서로 연결되어 있는 것으로 밝혀졌다. N개의 방은 1번부터 N번까지의 번호를 붙여 1번방, 2번 방, …, N번 방으로 부른다. 통로는 정확히 N-1개가 발견되었는데, 각각 서로 다른 두 방 사이를 연결시켜주며 중간에 다른 통로와 이어지는 경우는 없다고 한다. 또한 이 통로들을 이용하여 임의의 두 방 사이를 이동하는것이 가능하며, 임의의 두 방 사이를 이동할 때 같은 통로를 두 번 이상 지나지 않는 경로는 유일한 것으로 밝혀졌다. 새로 발견된 동굴을 조사하기 위해 동굴 탐사 로봇 두 대를 이용하기로 하였다. 두 로봇은 어떤 시점이..
-
알고리즘...108일지 2022. 1. 26. 14:01
노드 추가 삭제 구현 Graph_AdjacencyMatrix.cpp /// /// 그래프 옵션을 결정하고 그래프의 최초 크기를 설정한다. /// /// 그래프 옵션 /// 그래프 크기 Graph_AdjacencyMatrix::Graph_AdjacencyMatrix(GraphOption graphOption, size_t size) : Graph(graphOption) { m_capacity = size; m_matrix = new int* [size]; for (size_t i = 0; i < size; i++) { m_matrix[i] = new int[size]; std::fill_n(m_matrix[i], size, 0); } } /// /// 그래프에 노드를 추가한다. /// /// 추가할 노드 ..
-
알고리즘...107일지 2022. 1. 25. 11:47
그래프 구현 준비 노드 삭제 시 노드 정보에서도 제거해주기 위해 상위 클래스의 RemoveNode 함수를 구현한다. Graph.cpp /// /// 그래프에서 노드를 제거한다. /// /// 제거할 노드 이름 void Graph::RemoveNode(string name) { if (!Exists(name)) { return; } for (size_t total = m_graphNodeList.size(), i = 0; i < total; i++) { if (m_graphNodeList[i].name == name) { m_graphNodeList[i].name = ""; break; } } }