![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMmDjx%2FbtsmIQ2yaoR%2FYwjaZtYnMxCWzZ1Ovc73v0%2Fimg.jpg)
쉽게 배우는 운영체제 CPU의 성능이 낮고 메모리 크기도 작은 시스템에 내장하도록 만든 운영체제를 임베디드 운영체제(Embedded operating system)라고 한다. 운영체제란, 사용자에게 편리한 인터페이스(Interface) 환경을 제공하고, 컴퓨터 자원(Computer resource)을 효율적으로 관리하고 활용할 수 있도록 하는 소프트웨어다. 운영체제는 응용 프로그램(Application program)을 통한 성능 향상 뿐만 아니라, 자원 관리(Resource management)라는 중요한 역할도 한다. 응용 프로그램은 컴퓨터 자원을 직접 사용할 수 없고, 운영체제를 통해서만 사용할 수 있다. 자원 관리는 응용 프로그램에 컴퓨터 자원을 할당하고 회수하는 일이다. 응용 프로그램이 컴퓨터 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVvqsh%2FbtsjseGC5Sm%2FVFoDmuyY3Wfv8ZbDvzI5m0%2Fimg.png)
Level 2. 줄 서는 방법 next_permutation() 함수로 간단하게 해결하면 시간 초과가 발생한다. // 이 풀이는 시간 초과가 발생한다. #include #include #include #include using namespace std; vector solution(int n, long long k) { vector answer(n); iota(answer.begin(), answer.end(), 1); while (--k) next_permutation(answer.begin(), answer.end()); return answer; } #include #include #include using namespace std; long long factorial(int n) { return (n
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCN0fq%2FbtsmiFavgZs%2FI2jMkCkukAstfvfXMiQQu1%2Fimg.jpg)
이득우의 게임 수학 총 쪽수: 652p 공부 기간: 2023.04.03 - 2023.06.11 (70일) 평점: ★★★★☆ 좋은 내용들로 구성되어 있으나, 삼각함수나 행렬에 대한 지식이 부족한 사람에게는 꽤 어렵게 느껴질 수 있는 책이라고 생각한다. 물론 수학 개념들이 생략되어 있지 않고 모두 설명되어 있긴 하나, 그래도 쉬운 내용들은 아니다. 게임 엔진을 통해 게임을 만들 때 필요한 수학보다는 게임 엔진 자체를 구성하는 개념들에 관한 책이다. 책에서 다음과 같은 내용들을 배웠다. 벡터의 결합과 기저 삼각함수와 그 역함수 극좌표계 행렬과 역행렬 아핀 공간과 아핀 결합 브레젠험 알고리즘 코헨-서덜랜드 라인 클리핑 알고리즘 내적과 외적의 활용 램버시안 반사율 모델 메시 텍스처 매핑과 UV 모델링 행렬의 설계..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmY7VT%2Fbtsjqwza5ft%2FyR0Jz8zNKSmC4tzCTWAEKk%2Fimg.png)
Level 2. 하노이의 탑 유명하고 전형적인 하노이의 탑 알고리즘이다. 3개를 A에서 B를 거쳐 C로 옮긴다고 할 때, A에 있는 2개를 C를 거쳐 B로 옮긴다. A에 남은 1개를 C로 옮긴다. 1단계에서 B로 옮겼던 2개를 A를 거쳐 C로 옮긴다. #include #include #include using namespace std; vector solution(int n, int from, int through, int to) { if (n == 1) return {{from, to}}; vector result = solution(n - 1, from, to, through); result.emplace_back(vector{from, to}); vector t = solution(n - 1, th..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FryHHT%2FbtsmkwDI2M7%2FhY2DPqKawROS3dKviv0bok%2Fimg.png)
이득우의 게임 수학 트랜스폼의 계층 구조 시스템이 완성됐으니, 이를 기반으로 계층 구조를 이루는 캐릭터를 직접 제작해본다. 실습해 볼 캐릭터의 본 구조는 다음과 같다. 책의 예제인 CK소프트렌더러에서 캐릭터 메시를 생성하고 계층 구조로 본을 생성한 후, 리깅을 진행해 스킨드 메시를 완성하는 부분은 다음과 같다. 하나의 정점에 하나의 본만 연결하는 단순한 구조로 리깅한다. // 책의 예제인 CK소프트렌더러에서 캐릭터 메시를 선언하고 데이터를 설정하는 부분 bool GameEngine::LoadResources() { // 각 부위의 직육면체 크기를 지정 constexpr Vector3 headSize(0.5f, 0.5f, 0.5f); constexpr Vector3 bodySize(0.5f, 0.75f, ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAyRld%2FbtsjkihDJ1l%2FWpo7bCtm4jgfbzr6KZARK0%2Fimg.png)
Level 2. 모음사전 #include using namespace std; bool rDFS(string s, string& word, int& answer) { const static string alphabets[] = {"A", "E", "I", "O", "U"}; ++answer; if (s == word) return true; else if (s.length() == 5) return false; for (const string& alpha : alphabets) if (rDFS(s + alpha, word, answer)) return true; return false; } int solution(string word) { int answer = 0; const string alphabe..