[백준 / C++] 다리 놓기 (실버 5, 1010)
·
코딩테스트/백준 (Study)
https://www.acmicpc.net/problem/1010문제재원이는 한 도시의 시장이 되었다. 이 도시에는 도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다. 하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M)재원이는 서쪽의 사이트와 동쪽의 사이트를 다리로 연결하려고 한다. (이때 한 사이트에는 최대 한 개의 다리만 연결될 수 있다.) 재원이는 다리를 최대한 많이 지으려고 하기 때문에 서쪽의 사이트 개수만큼 (N개) 다리를 지으려..
프로세스, 메모리 구조
·
CS지식/운영체제
프로세스 vs 프로그램프로세스(process)는 컴퓨터에서 실행 중인 하나의 프로그램을 의미합니다.프로그램(program)은 특정 작업을 수행하기 위한 명령어의 집합입니다.메모리 구조OS는 프로그램을 실행하면서 디스크에 저장된 데이터를 메모리로 로드합니다. (메모리에 로드된 프로그램을 프로세스라고 합니다.) 프로세스는 OS로부터 독립된 메모리 영역(코드, 데이터, 스택, 힙)을 할당받으며 다른 프로세스의 메모리 영역에는 접근할 수 없습니다. 프로세스의 메모리 영역 구조를 간단히 표현하면 다음과 같습니다.참고로, Text(코드) 영역이 가장 낮은 주소 값을 가지며, Stack(스택) 영역이 가장 높은 주소 값을 가지고 있습니다.Code 영역 (Text)실행할 코드가 기계어로 컴파일되어 저장되어 있는 영역으..
운영체제, 커널, 시스템 콜
·
CS지식/운영체제
운영체제란?운영체제(OS, Operating System)는 하드웨어 위에 설치되어 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층입니다. 운영체제는 컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 수행합니다.운영체제의 목적운영체제는 한정된 컴퓨터 자원을 관리하는 시스템으로 다음과 같은 목적을 가지고 있습니다.처리 능력 향상 : OS는 자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상시킵니다.반환 시간 단축 : OS는 사용자가 시스템에 요청한 작업을 완료할 때까지 소요되는 시간을 단축시킵니다.사용 가능도 향상 : OS는 사용자가 컴퓨터를 사용해야 할 때 자원을 즉시사용할 수 있도록 합니다.신뢰도 향상 : OS는 입력 값에 대한 ..
[Algorithm] 그리디(Greedy) 알고리즘
·
코딩테스트/알고리즘
개요최근 게임 회사 코딩테스트를 몇 번 경험해보니 그리디 알고리즘에 관한 문제가 적어도 1문제 이상 출시되었고, 많은 어려움이 있었기에 이번 포스팅에서는 그리디 알고리즘에 대해 자세히 정리해보도록 하겠습니다.그리디 알고리즘 그리디 알고리즘(탐욕 알고리즘, Greedy Algorithm)은 매 순간 최선의 선택을 하여 문제를 해결하는 방법론입니다. 문제 해결 과정에서 한 번의 선택이 이후의 선택에 영향을 주기 때문에, 순간의 최적 선택이 결국 전체 문제의 최적 해답이 될 수 있다고 가정합니다. 즉, 각 단계에서 당장 최적인 해를 선택하고, 최종적으로 이러한 선택들이 모여 전체 문제의 최적 해답을 구성하는 방식입니다.그리디 알고리즘 필요 조건그리디 알고리즘을 사용하기 위해서는 다음의 두 가지 조건을 만족해야..
[Unreal Engine] Delegate
·
Game Programming/Unreal Engine
개요이번 포스팅에서는 언리얼 엔진에서의 이벤트를 처리하기 위한 기능 중 하나인 델리게이트(Delegate)에 대해 정리해보도록 하겠습니다.Delegate란? 델리게이트(Delegate)는 C++의 함수 포인터처럼 특정 함수를 등록해 호출할 수 있는 일종의 콜백 메커니즘입니다. 언리얼 엔진에서는 게임 이벤트를 처리하기 위해 델리게이트를 주로 사용합니다. 언리얼의 델리게이트는 C++의 델리게이트와 유사하면서도, 언리얼의 리플렉션 시스템과 결합되어 블루프린트에서 호출할 수도 있기에 코드와 비주얼 스크립트를 쉽게 연동할 수 있습니다. 델리게이트의 선언은 제공되어 있는 선언 매크로 중 하나를 사용하여 이루어집니다. 사용되는 매크로는 델리게이트에 바인딩되는 함수의 시그너처에 따라 결정됩니다.  아래의 표에서 델리게..
[Unreal Engine] 스마트 포인터 (C++ vs UE)
·
Game Programming/Unreal Engine
개요이번 포스팅에서는 기본적인 C++의 스마트 포인터와 언리얼 엔진에서의 스마트 포인터에 대해 정리해보도록 하겠습니다.C++ 스마트 포인터 (Unique, Shared, Weak)스마트 포인터는 메모리 관리를 자동화해 메모리 누수를 방지하고 객체의 수명을 관리하는데 유용합니다. Unique_ptr단일 소유권을 가지는 스마트 포인터입니다.소유권이 하나 뿐이므로, 복사가 불가 합니다.객체가 더 이상 사용되지 않는 경우 소멸되어 자동으로 메모리가 해제됩니다.#include // 스마트 포인터를 사용하기 위한헤더 #include using namespace std;class MyClass {public: MyClass() { std::cout ptr = std::make_unique(); ptr->..
[Unreal Engine] DataAsset, Lazy Loading
·
Game Programming/Unreal Engine
개요게임 개발에서는 대규모의 데이터를 효율적으로 관리하고 필요시 빠르게 접근할 수 있도록 하는 것이 중요합니다. 언리얼 엔진에서는 다양한 데이터 관리 방식을 제공합니다.  이번 포스팅에서는 Unreal Engine의 데이터 애셋(Data Asset)과 지연 로딩에 대해 정리해보겠습니다.DataAsset 개념Data Asset은 Unreal Engine의 UDataAsset 클래스를 상속받아 만든 사용자 정의 데이터 클래스입니다.이를 활용해 아이템, 캐릭터 스텟, 레벨 등 게임 내 다양한 속성을 외부 파일로 관리하고, 코드에서 해당 데이터를 간편하게 불러올 수 있습니다. 즉, DataAsset은 여러 데이터와 설정값을 관리하기 위해 사용되며, 코드를 수정하지 않고도 게임 데이터를 관리할 수 있다는 장점이 ..
[Project T.A Develop] 1. Proxy Geometry Tool
·
프로젝트/TimelessAdventure
개요프로젝트가 마무리 된 후 아쉬웠던 점들을 Develop 하기 위해 조금씩 진행한 내용들을 앞으로 정리해볼 예정입니다.프로젝트를 하면서 협업에서의 아쉬운 점이 아닌 기술적으로 아쉬웠던 점은 최적화에 대해 생각을 별로 하지 않았던 것이며, 조금씩 보완해보도록 하겠습니다.Proxy Geometry Tool언리얼 엔진의 Proxy Geometry Tool은 복잡한 씬에서 성능을 최적화하기 위해 사용되는 도구입니다. Proxy Geometry Tool은 성능 향상과 디테일 레벨 관리를 위해 활용됩니다. 기본적으로 Proxy란 본래의 대체물로써 사용되는 것을 의미합니다. Proxy Geometry Tool은 이러한 개념을 기반으로 하여 디테일한 메쉬(Mesh) 대신에 렌더링이 더 단순하고 경량화된 프록시 메쉬(..