0x00 시간, 공간복잡도 시간복잡도(Time Complexity) ★ 입력의 크기와 문제를 해결하는데 걸리는 시간의 상관관계 빅오표기법(Big-O Notation) 주어진 식을 값이 가장 큰 대표항만 남겨서 나타내는 방법 일단 5N+3을 보면 누가 봐도 N이 커지면 커질수록 3보다는 5N이 훨씬 크다. 그래서 3을 버리고 5N만 냅두는데, 5N에서 상수 5도 떼고 O(N)으로 나타낸다. 2N+10lgN에서도 N이 커지면 커질수록 10lgN보다는 2N이 훨씬 클테니 2N만 냅두고, 상수 2를 떼서 O(N)으로 나타낸다. N^2+2N+4에서는 N^2이 2N과 4보다 훨씬 크니 O(N^2)이 된다. NlgN과 N을 비교하면 아무래도 그냥 N보다는 lgN이 곱해진 NlgN이 더 클 것입니다. 그래서 NlgN ..
Spring Force Hooke's Law, 질점이 1개일 때 L0 : 용수철 원래 길이 L : 용수철 나중 길이 K : 용수철의 경직 정도 Fspring : 원래 길이로 돌아가려는 용수철의 힘 ∝ K Hooke's Law, 질점이 2개일 때 Damping Force Damper : 두 물체의 상대속도를 줄여준다. 즉, 두 물체의 속도가 비슷해지도록 만든다 ( 현관문이 쾅 안닫히도록 해주는 그 장치와 같다 ) 스프링이 출렁거리는 정도를 서서히 줄여준다 Spring Force : '길이의 차이' 에 의해 작용 됨 Damping Force : '속도의 차이'에 의해 작용 됨 덤핑 계수 d : 단위 속도 당 물체의 운동을 방해하는 힘 질점이 1개일 때 Damping Force in 1D :질점이 1개일때, ..
어떤 클래스의 객체가 프로그램 전체에서 단 하나만 만들어지도록 하는 것. 오직 한개의 인스턴스만을 갖도록 보장. 그래픽스 엔진이나 사운드 엔진에 종종 사용 된다. 싱글톤을 사용하는 이유 1. 객체 생성 없이 사용될 수 있게 한다. 사운드 엔진은 여러가지 많은 클래스, 객체에서 많이 사용된다. 사운드 기능을 쓰는 객체마다 계속 사운드 엔진 객체를 생성해내고 매개변수로 넘기고 하는 것 너무 낭비. 2. 사운드 엔진 객체를 딱 하나를 여러곳에서 공유 할 수 있게 한다. 사운드 엔진은 객체가 여러개일 필요가 없다. 단 하나면 된다. 사운드 엔진의 기능들만 가져다 쓰면 된다. 사운드 엔진의 map 에 저장되어있는 사운드들 굳이 다 객체로 찍어낼 필요 없이 기존에 만들어진 사운드 엔진 객체를 공유하는게 더 효율적이..
명령과 행위 자체를 객체로 만듬 최대한 추상화 해서 변경 사항이 생기더라도 메인 무한루프를 가지는 메인 함수에서는 변경할 것이 없게끔 해야 좋다. 전체 코드 #pragma once #include "Game2D.h" #include namespace jm { class Actor { public: virtual void moveUp(float dt) = 0; virtual void moveLeft(float dt) = 0; virtual void moveRight(float dt) = 0; virtual void moveDown(float dt) = 0; }; class Command { public: virtual ~Command() {} virtual void execute(Actor& actor, ..
std::vector 동적배열 std::vector 배열명; : 생성 배열명.size() : 크기값 배열명.resize(n) : n의 크기로 재설정 배열명.push_basck(value) : 벡터 제일 마지막 위치에 새로운 value 추가 배열명.pop_back(value) : 벡터 마지막 값을 삭제 배열명.clear() : 백터의 모든 값을 삭제 auto 추론 키워드 컴파일이 알아서 타입을 결정해준다. new와 delete 힙메모리 활용 type * 포인터 = new type; type만큼의 힙 공간에 메모리를 할당하고 주소를 반환해준다. 할당된 메모리 공간을 포인터가 가리키고 있다. 스마트포인터 make_shared, shared_ptr, unique_ptr 포인터처럼 동작하는 클래스 템플릿으로 사용..