본문 바로가기

분류 전체보기

(47)
문자열 거꾸로 정렬하기 Q : 문자열을 뒤에서부터 정렬하는 알고리즘을 작성하세요.Standard Template library -> library Template Standard apple grape melon strawberry ->strawberray melon grape apple 우리가 많이 해보았던 알고리즘은 asdf같은 문자열을 fdsa로 정렬하는 알고리즘입니다.하지만 이 문제는 문자열 자체를 순서를 바꾸지않고 뒤집는 것이므로 조금 더 응용 능력이 필요합니다. 처음으로 작성한 알고리즘은 stack에 string을 넣는 타입으로 작성하였습니다.stack은 선입후출이므로 뒤에서 부터 string이 나오게 됩니다. [ 첫번째 코드 ] 공백문자열이 나오면 Stack에 넣어주는 형식으로 작성하였습니다. 이 결과 2가지의 문제..
[ STL ] 표준 시퀀스 컨테이너(vector, deque, list) 컨테이너는 같은 타입을 저장, 관리할 목적으로 만들어진 클래스입니다. 컨테이너는 2가지로 나뉩니다. -표준 시퀀스 컨테이너-표준 연관 컨테이너 시퀀스 컨테이너는 vector, deque, list 3가지가 있습니다. ->vector deque는 배열기반, list는 노드기반 컨테이너연관 컨테이너는 set, multiset, map, multimap 4가지가 있습니다. -> 전부다 노드기반 컨테이너 [ 시퀀스 컨테이너 ] 시퀀스 컨테이너는 차례차례 원소를 추가하고 제거하는 push_back()과 pop_back()을 가지며 첫 원소와 마지막 원소를 참조하는 front()와 back()을 가집니다. 또한, 지정한 위치에 원소를 삽입할 수 있는 insert()를 가집니다. > vector - vector는 앞..
빅오(Big-O) 표기법 > Big-O 표현방법은 알고리즘의 퍼포먼스를 이야기할때 상당히 좋은 방법이다. ▶ O(1) void printFirstItem( int[ ] array ){cout
[Eunbi's Farm - DirectX11] 디퍼드 렌더링 * 포워드 라이팅 : 각 Mesh에 대하여 각 광원에 관한 것을 모두 그려야 한다. N개의 광원과 M개의 Mesh가 포함된 씬을 표현하기 위해서는 NxM번의 드로우 콜이 필요하다. 이 호출수가 크기 때문에 FPS를 확보하면서 그릴 수 있는 Object 수에 한계가 있다. > 해결책? GPU가 다중 렌더링 타겟(MRT)을 보편적으로 지원함으로써 씬 렌더링과 광원 렌더링을 구분하는 해결책이 제시되었다. 이 경우 드로우 호출이 M+N번으로 감소한다. 이러한 접근 방식을 GBuffer라 한다. GBuffer는 씬의 각 점에 대한 정보를 갖는 최종 렌더링되는 픽셀 수와 같은 크기의 렌더타겟 이미지의 집합이며 기본적으로 씬의 각 픽셀에 대한 Depth, Normal정보를 가진다. *디퍼드 라이팅 : 깊이와 노멀정보..
[Context Switching] 프로세스와 쓰레드에서의 컨텍스트 스위칭 * 프로세스란? 실행파일을 클릭했을 때, 메모리(RAM)할당이 이루어지고, 이 메모리공간으로 코드가 올라간다. 이 순간부터 이 프로그램은 '프로세스'라 불리게 된다. * 프로세스의 스케줄링? CPU는 하나인데, 동시에 여러 프로세스가 실행되어야한다. CPU는 여러개의 프로세스를 번갈아가면서 실행하는데 매우 고속이기 때문에 우리 눈에는 동시에 실행되는 것처럼 보인다. 이러한 멀티프로세스 운영체제에서 프로세스의 CPU 할당 순서 및 방법을 결정짓는 것을 '스케줄링'이라 한다. * 프로세스의 상태변화? 프로세스는 Ready, Running, Blocked 상태를 지닌다. Running 상태인 프로세스는 더 우선순위가 높은 프로세스가 실행될 경우 Ready 상태가 되고, 우선순위가 높은 프로세스가 실행된다. B..
상속과 동적,정적바인딩 * 다형성이란? 부모 Class의 포인터로 자식객체를 가리킬 수 있다는 점과, 이런 경우에도 가상함수를 통해서 알맞은 자식 class의 함수가 호출된다는 점이 다형성을 지원하는 C++의 기능이다. 즉, 객체간의 연결을 유연하게 해주는 원동력이 된다. * 동적바인딩과 정적 바인딩 (1) 바인딩(Binding)이란? 프로그램 소스에 쓰인 각종 내부요소,이름 식별자들에 대해 값 또는 속성을 확정한 과정. 함수 주소를 찾아가는 과정이다. (2) 정적 바인딩(Static Binding)과 동적 바인딩(Dynamic Binding): 바인딩 과정이 컴파일 시점에 이루어지느나, 실행 도중 이루어지느냐에 따라 나뉩니다. - 정적 바인딩 ? 바인딩 과정이 컴파일 시점에 이루어지는 바인딩. 소스상에 명시적으로 int a ..
Class내에서의 Static 정적(Static)멤버변수는 '객체(Class Instance)가 소유하지않는(범주에 속하지 않는) 멤버이다. class A{public:int x; } 일반적인 멤버변수는 객체(Class Instance)가 생성될 때마다 독립적으로 생성된다. 하지만 class A{public:static int x; } 위와 같이 멤버에 static을 붙여 정적변수로 생성하면 해당 클래스에 하나만 생성되고 모든 객체에서 공동으로 접근할 수 있다.마찬가지로 정적 함수도 클래스에 하나만 생성되며 공동으로 접근 가능하다. * 정적멤버들도 접근지정자(public, protected, private)를 붙일 수 있다. * 정적 변수는 Class당 1개만 생성되므로 클래스 내부에서 초기화가 불가능하고, 클래스 외부에서 전역변수처..
[ Const 2편 ] Class에서의 Const초기화 Q. 다음 코드는 2가지 면에서 오류가 난다. 그 이유는 ? class Point {private:int Number;const int const _Number; public:int MinusNumber(int _Numver) const{Number = _Numver;}}; void main(){Point NewTest = Point();NewTest.MinusNumber(20); } (1) 일단 Const가 붙은 함수는 함수 내에서 Class 내의 변수 수정이 불가하다. (2) Const변수는 초기화가 되어야 하는데 안 되어있다. 그렇다면 Const변수는 어떻게 초기화를 할 수 있을까? Point(int Num){_Number = Num;} 이렇게 생성자에 해주면 될 것 같지만, 메모리 구조상 생성자가..