SMALL

전체 글 101

수학적 귀납법

귀납법의 원리 Q. n≥n0인 모든 값에서 어떤 함수 F(n)이 항상 참이라는 것을 증명하라. - 풀이 방법 1. F(n0)이 참이라는 것을 보인다. 2. F(n0)이 임의의 n에 대해 F(n)이 성립한다고 가정한다. 3. 이러한 가정에서 F(n + 1)이 성립한다는 것을 보인다면 n ≥ n0에 대해 F(n)이 성립한다는 것이 증명된다. 이를 '귀납정 정리'라고 한다. - 예제 풀이 1. n = 0일 때: 0(0+1) / 2 = 0 → Base Step 2. 주어진 n에 대해: n(n+1) / 2 = 참이라고 가정 3. 위의 가정을 이용해 다음이 성립함을 보임 → Induction Step = (n+1)(n+2) / 2

자료구조를 위한 수학

기본적인 함수 1. 마루(Floor)와 천장(Ceil) 함수 - 마루 함수 어떤 실수 x 이하인 제일 큰 정수를 반환 ex) 3.2 = 3 -5.2 = -6 - 천장 함수 어떤 실수 x 이상인 제일 작은 정수를 반환 ex) 3.2 = 4 -5.2 = -5 2. 로그 함수 - f(n) = n½ = √n는 In(n)보다 항상 크다 - 로그와 지수 함수의 증가율 비교 o 지수 함수는 d > 0에서 그 어떤 비상수 다항식보다 빠르게 증가한다. o 그러므로 지수 함수의 역함수인 로그 함수는 그 어떤 다항식보다 느리게 증가한다. ex) f(n) = n½ = ²√n는 In(n)보다 항상 빠르게 증가한다. ex) f(n) = n⅓ = ³√n은 n = 93까지만 In(n)보다 느리게 증가한다. - 로그 함수의 표기, 종..

자료구조와 알고리즘의 이해

알고리즘의 개요 알고리즘의 조건 - 입력 : 0개 이상의 입력이 존재해야 한다. - 출력 : 1개 이상의 출력이 존재해야 한다. - 명백성 : 각 명령어의 의미는 모호하지 않고, 명확해야 한다. - 유한성 : 한정된 수의 단계 후에는 반드시 종료되어야 한다. cf) OS는 무한루프로 실행됨 - 유효성 : 각 명령어들은 실행 가능한 연산이어야 한다. 알고리즘의 기술 방법 - 자연어로 표기(영어, 한국어 등) o 읽기 쉬움 o 단어들을 정확하게 정의하지 않으면 의미 전달이 모호 - 흐름도(Flow Chart) o 직관적이고 이해하기 쉬운 알고리즘 기술 방법 o 그러나 복잡한 알고리즘의 경우, 상당히 복잡해짐 - 유사코드(Pseudo-code-개념적인 코드) o 알고리즘의 고수준 기술 방법 o 자연어보다는 더..

게임시스템 기획

시스템 기획 게임시스템기획은 데이터와 데이터를 이용한 연산으로 콘텐츠를 설계할 수 있게 해주는 것을 말한다. 따라서 게임시스템을 기획하기위해서는 사용되는 데이터와 데이터의 논리적 관계에 대한 분석이 선행되어야 한다. 사용되는 테이터 형태 - 테이블 형태(관계형 데이터 베이스) 인덱스 데이터1 데이터2 데이터3 데이터4 데이터5 데이터6 데이터7 1001 1002 1003 테이블형 데이터 예시 - 비테이블 형태 데이터 분석 2가지로 구분 - 객체와 객체 간의 분석 : 몬스터, 플레이어, 지형 등의 객체 간의 데이터 분석 - 객체 내부의 분석 : 몬스터 내부의 데이터 분석 시스템 규칙 기획 게임플레이 규칙에 대한 정의 - 규칙의 예 캐릭터 조작 방법 몬스터 생성 방법 캐릭터와 몬스터의 상성관계 특정 몬스터 ..

Command Pattern

Command Pattern is a behavioral design pattern taht turns a request int a stand-alone object that contains all information bout the request. 명령 패턴은 요청에 대한 모든 정보를 포함하는 독립 실행형 개체로 요청을 전환하는 행동 디자인 패턴이다. 플레이어에 대한 로직을 짤 때 초보적인 발상으로 PlayerController에 마구 때려넣는 식으로 코딩을 하는 경우 많다. 예를 들면 PlayerController에 Move()와 Jump(), Attack() 등등의 함수를 구현해놓고 그 안에서 사용한다. 이런 방식이 잘못된 것은 아니지만 결국 유지,보수에 치명적이며, 협업할 시 코드가 너무 많아져..

변환 랜덤 라이브러리

데이터 변환 라이브러리 함수 - atoi : 문자열을 정수(int)로 변환 - atof : 문자열을 실수(double)로 변환 - strtof : 실수 문자열을 float형 실수로 변환 - strtod : 실수 문자열을 double형 실수로 변환 예제) atoi("2020"); // int형 2020으로 리턴 atoi("2020.123"); // int형 2020까지만 리턴 atoi(".,2020"); // 0을 리턴 활용 예제) - 근무일 입력 시 급여 계산 #include #include #include #include int main() { char code[12] = "20080123-02"; char year[5]; // 연도 + 널문자 까지 해서 5로 지정 time_t timer; struct..

적 케릭터 닷지 회피 구현(Enemy Dodge System)

게임을 개발하던 중에 젤다의 전설 야생의 숨결에서 보코블린(적 케릭터)가 공격을 회피(닷지) 하는 것이 생각나서 구현해보았다. [SerializeField] private float dodgeChance = 0.3f; // 닷지 확률(0 ~ 1f 사이 값) [SerializeField] private float dodgeAngle = 30; // 반각 30도, 총 60도 각도 [SerializeField] private float dodgeDistance = 5f; // 닷지할 포인트 거리 [SerializeField] private float counterattackChance = 0.3f; // 닷지 후 반격 찬스 // 플레이어가 공격했을 때 Action을 작동 private void Awake() ..

시간 관련 라이브러리

종류 헤더 파일: time.h 1. 시간 계산 time: 현재 시간 clock: 시간 계산 함수 difftime: 두 시간 사이의 차이 계산 mktime: struct tm 구조체를 통해 epoch time을 구하는 함수 2. 시간 변환 asctime: 시간구조체를 문자로 변환 ctime: 시간변수를 문자로 변환 gmtime: UTC 시간으로 변환 localtime: 지역 시간으로 변환 strftime: 날짜와 시간으로 이루어진 문자열을 struct tm으로 변환 라이브러리 변수 stize_t: 부호 없는 정수형 clock_t: 프로세서 시간 저장 변수 타입 time_t: 캘린더 시간 저장 변수 타입 struct tm: 날짜, 시간 처리 구조체 관련 용어 Epock Time - 1970년 01월 01일 ..

파일 입출력 라이브러리(Basic Step)

파일 입출력 입력과 출력의 대상이 파일인 경우 입출력 대상 텍스트 파일, 이진 파일 입출력 과정 * 스트림을 생성함으로 파일 구조체에 대한 접근이 가능해짐. 파일 열기 파일 입출력을 수행하려면 먼저 fopen 함수를 이용하여 파일을 열어야 함 fopen 함수의 원형: FILE* fopen(const char* filename, const char* mode); filename : 파일 이름 mode : 파일 열기 모드 리턴 값 : 생성된 파일 스트림의 파일 포인터를 리턴 / 파일을 열 수 없으면 Null 포인터를 리턴 Default mode는 Text file. 입출력 함수 예제_1 #include int main(void) { FILE* fp; char ch; if (fp = fopen("./main...

LIST