Game DevTip26 5. STL : 재귀함수에 대해서 재귀함수재귀는 대표적인 ‘분할 정복’ 알고리즘 이다.K번쨰 블록이 반드시 쓰러진다는 사실을 증명하시오수학적 귀납법(Mathematical Induction) - 한 조건으로 확정된 상황을 바탕으로 진행.첫번째 블록은 반드시 쓰러진다.첫번쨰 블록이 쓰러지면 두번째 블록도 반드시 쓰러진다.(k-1)번째 블록이 쓰러지면 k번째 블록도 반드시 쓰러진다.재귀적 알고리즘(Recursive Algorithm) - 메모리 스택을 씀.수학적 귀납법의 순서를 역순으로 증명.분할 정복 :큰 문제를 작은 문제로 환원 / 작은 문제 역시 큰문제와 유사.아주 작은 문제는 반드시 해결됨( = base case)반드시 베이스 케이스에 도달해야 함.팩토리얼, 문자열 뒤집기, 카운트 다운, 피보나치수열, 하노이 탑, 이진 탐색, 게임 .. 2024. 12. 7. 4. STL : Call by value, Ref, Address & 배열과 포인터에 관련해서. 배열과 포인터포인터 : 메모리에 저장된 다른 값의 메모리 주소를 저장하는 변수배열 : 이름은 주소(사실은 주소임)포인터 변수 선언 : Type *var_name;(int *ptr; → 인티저 값을 가르키는 포인터 변수.)포인터 사용 : 다른 변수의 주소를 참조하여 사용가능. 동적 메모리 할당가능. → 함수도 주소이므로 사용가능.- 주소할당.int a = 100;int p = &a; - 동적메모리 할당.int *p = null;p = new int ; // 동적 메모리 할당. *p = 500; //p가 가르키는 해당 공간에 500이라는 값을 저장해라.delete p; // 메모리 해제(안하면 누수 ^^7)Call by value & Call by address & Call by Refvalue : 인수가 .. 2024. 12. 7. 3. STL : 클래스 상속에 관하여. 1. 클래스 상속(객체지향 방법론)객체와 메세지클래스 : 붕어빵 틀객체 : 붕어빵 실물 (메시지를 보내거나 받는 대리인(클래스에 의해서 만들어진 실물))메세지(함수) → 윈도우 프로그래밍에서는 주로 이벤트이다.즉, 객체가 처리해야할 일을 전달하는 것.(그냥 함수임)정보은닉 : 실제 처리되는 과정과 내용이 숨겨져 있다.정리)클래스 : 프로그래머가 정의한 자료형객체 : 클래스 타입으로 선언하여 메모리에 할당 된 것.인터페이스 파일(헤더)객체를 추상화한 파일외부 사용자를 위한 파일클래스, 메시지(가상함수)가 정의된 파일 - 참고로 변수는 없음.외부사용자는 세부구현 내용을 몰라도 이 파일만 읽고 불러서 사용 가능.구현 파일(소스 파일)인터페이스 파일에 정의된 메시지(함수)를 구현한 파일내부 구현자가 작성한 파일.. 2024. 12. 7. 2. STL : 추상화에 관해서. 1. 추상화세부적인 것들을 다 빼고서 일반화를 시키는 것(부품을 뺴고 큰것들만 남기기)장점 : 재사용이 쉬워짐.언리얼에서 AActor → Chracter클래스로 상속 받는 거처럼 생각하면 됨.객체 단위로 프로그램을 짜게 만드는 요인.1-1 추상자료형기능의 세부구현 내용은 나타내지 않음.기능이 어떤 형태인지만 나타냄.세부구현 내용은 몰라도 사용가능.단, 개발자는 세부 구현 내용은 알고 있어야 함.C++에서는 header 파일에 클래스나 함수등을 선언해서 추상 자료형을 나타냄.실제 세부기능은 cpp파일에서 구현됨.1-2 추상자료형과 C++사용과 구현을 분리.추상 자료형은 헤더세부기능은 cpp사용자에게는 구현방법이 숨겨져 있어서 보이지 않음.추상 자료형 선언 = 클래스 or 구조체 선언추상 자료형 작업 = 객.. 2024. 12. 7. 1. 자료구조 전 기초 상식(?) 객체지향 프로그래밍 OOP클래스는 Define하기 위해 만드는 객체이다.엔진들은 모두 모듈화(상속이 되어있다.)프로그래밍 동작 순서하드 → 메모리(용량 큼) 속도 조금 느림 → 레지스터(용량 작음) 속도 빠름 → CPU선언파일(h), 구현파일(cpp)차이점헤더파일은 이름같은거 정의 할때 선언(public, protected, private으로 공개 범위 적용)구현파일은 헤더파일을 가지고 오거나 해당 변수를 이용하여 기능을 구현.변수(*메모리에 공간을 할당하는 것은 운영체제가 해줌.) 빌트인 타입, 유저인 타입(*클래스도 마찬가지임)즉, 메모리 공간하면, 구조를 생각 후 → 객체를 생각해줘야 한다.유저 디파인 타입 : 구조체 타입을 사용하여 만들어야 함(예시 : 캐릭터가 가질 수 있는 속성들을 보관.)변수.. 2024. 12. 7. 군대에서 코딩 공부하는 법, replit Online IDE *해당 글은 광고가 아닙니다. 또한 매우 주관적이며, 제가 사용했을 때 편했던 것을 위주로 글을 작성했습니다. 필자인 저는 현재 군 복무중에 있습니다.대략 1년전 2022년 12월 19일에 입대를 해서 현재11월 1일에는 상병 3호봉을 달고서 앞으로 전역까지 대략 7개월 남짓 남은 상태입니다. 나름대로 전산병(기술 행정병)으로 근무를 하면서 분대장까지 달고,아래 후임까지 달게 된 요즘, 이제 슬슬 사회로 돌아가기 전에기존에 했던 개발 실력들을 다시 키워야겠다는 생각이 들기 시작하니... 프로그래밍을 사지방에서 하려고 하는데군대에서는 컴파일이 가능한 컴퓨터가 따로 정해져있고 이를 어겨일반 인트라넷이나 사지방 인터넷망 PC에 컴파일러를 설치하는 행위는 엄연하게 징계사유입니다.(물론 사지방 같은 경우는 아예 .. 2024. 12. 5. 3. 언리얼 엔진 싱글케스트 델리게이트 기초 사실 나는 델리게이트에 대해서 잘 모른다.C#을 해본거도 아니고, 언리얼에서 함수 다룰때도 완전 초보식으로 다루기도 했고.... 그래서 이 김에 한번 언리얼 싱글케스트 델리게이트를 공부한 내용들을 정리해보려고 한다.(약간 틀릴 수도 있다.) 일단, 포인터는 런타임에 지정이 가능하다.그리고 가리키는 메모리 주소를 바꿀수 있다는 점도 유용하다. 표준타입 외에 함수에 대해서도 포인터를 생성이 가능하지만,여러가지 이유로 안전하지 않다고 한다. 그래서 이것 때문에 언리얼 엔진에서는 델리게이트를 쓴다고... 일단 델리게이트는 훨씬 안전한 함수 포인터라고 한다. 어떤 함수가 할당되는지 그 함수가 호출되는 순간까지 알지 못하는 상태에서미꾸라지마냥 유연하게 함수를 호출 할 수 있다고 한다. 이런 유연함이 델리게이트를 선.. 2024. 12. 5. 2. 언리얼 엔진의 메모리 관리에 대해서 *해당 글은 공부용으로, C++를 사용한 언리얼 엔진 4개발 2/e의 내용이 다수 포함 되었습니다. 이번에 언리얼 엔진의 메모리 관리에 대해서 한번 알아보겠다. 일단 기본적으로 언리얼은 C++을 사용중인다. 때문에 C에서 사용하던 malloc과 free보다는 new와 delete를 사용하는게 원칙이다.(사실 원칙이라기 보다는 권장이다.) new 연산자는 메모리 할당후 오브젝트가 생성된 직후에 생성자를 호출한다.하지만 malloc에서는 이것이 되지 않는다. (물론 다른 기능들 자체는 malloc과 거의 동일.) 그리고 무조건 new 연산자를 사용하여 동적할당을 했다면, free()가 아닌 delete로 동적할당을 해제해야한다. 아무튼 new는 사용할 연속적인 메모리 공간을 할당하고,생성자를 new연산자의 .. 2024. 12. 5. 이전 1 2 3 4 다음