자료구조
-
JUNGOL/Intermediate_Coder/자료구조/1124 : 색종이(고)코딩 테스트/JUNGOL 2021. 9. 15. 02:12
Intermediate_Coder/자료구조/색종이(고) 문제 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 도화지에서 검은색 직사각형을 잘라내려고 한다. 직사각형 또한 그 변이 도화지의 변과 평행하도록 잘라내어야 한다. 예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 과 같은 모양으로 붙였다. 에 표시된 대로 검은색 직사각형을 잘라내면 그 넓이는 22×5=110이 된다. 반면 에 표시된 대로 검은색 직사각형을 잘라내면 그 넓이는 8×15=120이 된다. 검은색 색종이의 수와 각 색종이를 붙..
-
인접 리스트를 통한 그래프 구현프로그래밍 기초/자료구조 2021. 5. 3. 09:37
인접 리스트 통한 그래프 구현 그래프 구현/인접 리스트 인접 리스트는 각각의 노드를 하나의 포인터로 하여 특정 노드에서 이동 가능한 노드를 표현하는 방법으로 다음과 같이 표현된다. 구현이 필요한 메서드 및 속성은 다음과 같다. 생성자 ArrayListGraph() 비어있는는 인스턴스 생성 속성 NodeCount 현재 노드의 개수 메서드 InsertNode() 노드 추가 InsertEdge(int, int) 앞의 노드에서 뒷 노드로 이동하는 에지 추가 RemoveNode(int) 지정된 인덱스의 노드 제거 RemoveEdge(int, int) 앞의 노드에서 뒷 노드로 이동하는 제거 Clear() 저장되어 있는 모든 데이터 삭제 GetDegreeIn(int) 노드의 진입 차수 반환 GetDegreeOut(i..
-
자료구조...84일지 2021. 4. 30. 08:23
ArrayListGraph 기능 메서드) 그래프에서 사용하는 기능 메서드를 구현한다. ArrayListGraph.cpp /// /// 지정된 인덱스의 노드에 진입하는 차수를 반환한다. /// /// 노드의 번호 size_t ArrayListGraph::GetDegreeIn(int num) { if (!ContainsNode(num)) { return -1; } int count{ 0 }; GraphHeader* curHead{ m_graphHeaders }; while (curHead != nullptr) { GraphNode* curNode{ curHead->m_data }; while (curNode != nullptr) { if (curNode->m_idx == num) { count++; } cu..
-
자료구조...83일지 2021. 4. 28. 08:19
ArrayListGraph 삭제 메서드) 그래프에서 사용하는 삭제 메서드를 구현한다. ArrayListGraph.cpp /// /// ArrayListGraph에서 지정된 인덱스의 노드를 제거한다. /// /// 제거할 값 void ArrayListGraph::RemoveNode(int num) { if (!ContainsNode(num)) { std::cout m_idx, num)) { RemoveEdge(curHeader->m_idx, num); } curHeader = curHeader->m_next; } GraphHeader* prevHeader{ nullptr }; curHeader = m_graphHeaders; while (curHeader != nullptr) { if (curHeader-..
-
자료구조...82일지 2021. 4. 27. 20:39
ArrayListGraph 삽입 메서드) 그래프에서 사용하는 삽입 메서드를 구현한다. ArrayListGraph.cpp #pragma region 메서드 /// /// ArrayListGraph에 노드를 추가한다. /// void ArrayListGraph::InsertNode(int num) { if (ContainsNode(num)) { return; } GraphHeader* newHeader{ PopHeader(num) }; newHeader->m_next = m_graphHeaders; m_graphHeaders = newHeader; m_nodeCount++; } /// /// ArrayListGraph에 from -> to 인 간선을 추가한다. /// /// 시작 노드 /// 끝 노드 voi..
-
자료구조...81일지 2021. 4. 26. 12:16
ArrayListGraph 생성자 및 출력 함수 구현 ArrayListGraph.h #pragma once #include struct GraphHeader { GraphHeader(int value) : m_idx(value), m_data(nullptr), m_next(nullptr) { } int m_idx; GraphNode* m_data; GraphHeader* m_next; }; struct GraphNode { GraphNode(int value) : m_idx(value), m_next(nullptr) { } int m_idx; GraphNode* m_next; }; class ArrayListGraph { public: #pragma region 생성자 ArrayListGraph(); ~..
-
자료구조...80일지 2021. 4. 24. 10:44
그래프 구현/인접 리스트) 인접 리스트는 각각의 노드를 하나의 포인터로 하여 특정 노드에서 이동 가능한 노드를 표현하는 방법으로 다음과 같이 표현된다. 구현이 필요한 메서드 및 속성은 다음과 같다. 생성자 ArrayListGraph() 비어있는는 인스턴스 생성 속성 NodeCount 현재 노드의 개수 메서드 InsertNode() 노드 추가 InsertEdge(int, int) 앞의 노드에서 뒷 노드로 이동하는 에지 추가 RemoveNode(int) 지정된 인덱스의 노드 제거 RemoveEdge(int, int) 앞의 노드에서 뒷 노드로 이동하는 제거 Clear() 저장되어 있는 모든 데이터 삭제 GetDegreeIn(int) 노드의 진입 차수 반환 GetDegreeOut(int) 노드의 진출 차수 반환
-
인접 행렬을 통한 그래프 구현프로그래밍 기초/자료구조 2021. 4. 22. 20:21
인접 행렬을 통한 그래프 구현 인접 행렬로 그래프를 표현하는 것은 다음과 같이 각각의 노드가 순서대로 존재하는 것으로 가정하여 표현하는 것이다. 구현이 필요한 메서드 및 속성은 다음과 같다. 생성자 ArrayGraph() 비어있고 기본 초기 용량을 가지는 인스턴스 생성 ArrayGraph(int) 비어있고 지정한 초기 용량을 가지는 인스턴스 생성 속성 NodeCapacity 노드의 최대 개수 NodeCount 현재 노드의 개수 메서드 InsertNode() 가능할 경우 노드 추가 InsertEdge(int, int) 앞의 노드에서 뒷 노드로 이동하는 에지 추가 RemoveNode(int) 지정된 인덱스의 노드 제거 후 모든 데이터 위치 조정 RemoveEdge(int, int) 앞의 노드에서 뒷 노드로 ..