CS
선형(Linear) / 비선형(Non Linear) 자료구조
선형 자료구조 (Linear) 선형 자료구조란 하나의 자료 뒤에 하나의 자료가 존재하는 것이다. 자료들 간의 앞뒤 관계가 1:1의 선형관계 배열과 리스트가 대표적이고 더 나아가서 스택, 큐도 이에 해당된다. 비선형 자료구조 (NonLinear) 비선형 자료구조란 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 것이다. 자료들 간의 앞뒤 관계가 1:n, 또는 n:n 의 관계 트리와 그래프가 대표적이며 계층적 구조를 나타내기에 적절하다. 정리 출처 : https://goodgid.github.io/DS-Linear-and-NonLinear/
그래프 개념
다음 두 가지 요소로 구성된다. Vertex의 집합 Edge의 집합 여기서 Vertex는 "어떤 대상의 객체"를 의미하고, Edge는 "Vertex간의 관계"를 뜻한다. 그래프는 Vertex와 Edge의 set으로 정의되며, 구성된다고 볼 수 있다. Graph와 관련된 용어정리 Graph와 관련되서 알고 있어야할 용어의 종류는 다음과 같다. Vertex : 실세계에서의 어떤 대상을 표현하는 객체 문헌에 따라서 Vertex를 "node"라고 표현하기도 함. Edge : 두 Vertex간에 관계가 존재하는 경우 Edge가 존재한다. 문헌에 따라서 Edge를 "arc"라고 표현하기도 한다. Adjacent : 두 Vertex 간에 Edge가 존재함을 의미 Path : 두 Vertex간에 Edge로서 연결되는 ..
비쥬얼 스튜디오 프로젝트명 변경하는 방법
.sln 파일을 메모장에 옮긴 후 색칠한 곳을 본인이 변경하고자 하는 프로젝트 명으로 변경하기, .vcxproj 확장명 유지. P.S. 폴더명과 참조하는 헤더/라이브러리 파일이 있다면 디렉터리도 바꿔줘야 한다.
DirectX 11 LNK2019 에러 해결 방법
Unresolved external symbol __vsnprintf .... (in dxerr.lib) #pragma comment(lib, "legacy_stdio_definitions.lib") d3dUtil.h 헤더파일 내 HR 매크로 오류 #pragma comment(lib, "dxerr.lib") #pragma comment(lib, "D3DX11.lib")
시간 복잡도 (Time Complexity)와 공간 복잡도 (Space Complexity)
알고리즘 성능 평가 평가하기 위해 '복잡도(Complexity)'의 척도를 사용한다. 그중 시간 복잡도와 공간 복잡도의 개념이 나오며, 동일한 기능을 수행하는 알고리즘이 있을 때 복잡도가 낮을 수록 좋은 알고리즘이라 말한다고 한다. 시간 복잡도: 특정한 크기의 입력에 대하여 알고리즘의 수행 시간 분석 공간 복잡도: 특정한 크기의 입력에 대하여 알고리즘의 메모리 사용량 분석 1. 시간 복잡도 시간 복잡도는 특정 알고리즘이 어떤 문제를 해결하는데 걸리는 시간을 의미한다. 같은 결과를 갖는 프로그래밍 소스도 작성 방법에 따라 걸리는 시간이 달라지며, 같은 결과를 같는 소스라면 시간이 적게 걸리는 것이 좋은 소스다. 빅-오 표기법 예를 들어, 동전을 튕겨 뒷면이 나올 확률을 이야기 할 때 운이 좋으면 1번에 뒷..
OOP
OOP란?? (Object Oriented Programming) C++는 객체지향 언어이고 해당 언어를 OOP라고 부르며 Object Oriented Programming의 약자다. 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. Class (클래스) / Object (객체) Abstraction (추상화) Encapsulation (캡슐화) Inheritance (상속성) Polymorphism (다형성) 장점 코드 재사용이 용이 (남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있다.) 유지보수가 쉬움 (절차 지향 프로그래밍에서..
응집도 - 결합도 (Cohesion - Coupling) 개념
응집도는 모듈 내부에 존재하는 구성 요소들 사이의 밀접한 정도를 나타낸다. 즉 하나의 모듈 안에서 구성 요소들 간에 똘똘 뭉쳐 있는 정도. 응집도가 높을수록 구성 요소들이 꼭 필요한 것들로만 모여 있고, 낮을수록 서로 관련성이 적은 요소들이 모여 있다. 응집도 종류이러한 응집도는 아래와 같이 다양한 기준으로 모듈을 구성할 수 있고 그에 따라 응집도와 품질이 달라진다.기능적 응집도 : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우.순차적 응집도 : 모듈 내의 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우.교환적 응집도 : 동일한 입력과 출력을 사용하여 서로 다른 긴으을 수행하는 구성 요소들이 모여 있을 경우.절차적 응집도 : 모듈이 다수의 관련 기능을..
dxerr.lib(dxerrw.obj) : error LNK2019 해결방법
dxerr.lib(dxerrw.obj) : error LNK2019: __vsnwprintf 외부 기호(참조 위치: "long __stdcall StringVPrintfWorkerW(unsigned short *,unsigned int,unsigned int *,unsigned short const *,char *)" (?StringVPrintfWorkerW@@YGJPAGIPAIPBGPAD@Z) 함수)에서 확인하지 못했습니다. #pragma comment(lib, "legacy_stdio_definitions.lib") 포함
C++ 그래프를 이용한 BFS / DFS 계속 업데이트할 예정
출처 : https://www.youtube.com/watch?v=tWVWeAqZ0WU 첫번째 문제 #include #include #include #include #include using namespace std; #define TOTAL_SIZE 1000 #define y first #define x second vector graph[TOTAL_SIZE]; bool visited[TOTAL_SIZE]{ false }; int edge = 0; void DFS(int _start) { cout
BOIDS (군중 알고리즘) RTS AI
스타크래프트의 하이브리드 최적 경로 마이크로 관리는 RTS 게임의 가장 중요한 기능이다. 싱글 유닛 또는 한 그룹의 유닛을 드래그해서 선택을 하여 적을 공격하게끔 하는 것이며 이러한 AI 기능은 구현하고자 할 때 큰 골치거리다. 두 가지의 구현 방법이 있다. 퍼텐셜 필드 알고리즘 : 목표점으로 이끄는(attractive) 인공적인 포텐셜 필드와 장애물로부터 멀어지게 내보내는(repulsive) 인공적인 포텐셜 필드를 형상공간에 구축하는 알고리즘. 군중 이동 알고리즘 : 군중 이동(새 떼라던지 물고기들의 움직임 등 여러 집단이 함께 움직이는)에 대한 알고리즘. 게임 유닛들의 내비게이션은 주로 A*와 같은 최단 경로 알고리즘을 사용한다. 하지만, RTS와 같이 월드가 수시로 변화하는 게임에는 적합하지가 않다..