[C++] 백준/Gold/11066. 파일 합치기
·
C++/Algorithm
파일 합치기 (백준 11066번)문제 개요여러 파일을 하나의 파일로 합칠 때, 두 파일을 합치는 비용은 두 파일의 크기의 합이다.여러 개의 파일을 주어진 순서대로 합칠 때,전체 합치는 비용을 최소화하는 합치는 순서를 찾는 문제이다.접근 방법: 동적 계획법 (DP)문제는 구간 DP 문제의 대표적인 예제로,파일 $ A_i $의 크기를 배열 $ \text{arr}[i] $로 두면,구간 $[i, j]$에 있는 파일들을 합치는 최소 비용 $ dp[i][j] $는 다음 점화식으로 구할 수 있다.1. 누적 합 (Prefix Sum)연속된 파일 크기의 합을 빠르게 계산하기 위해,누적 합 배열 $ \text{subtotal} $을 사용한다.$$\text{subtotal}[k] = \sum_{l=0}^{k-1} \text..
[C++] 백준/Gold/10986. 나머지 합
·
C++/Algorithm
나머지 합 (백준 10986번)문제 개요문제 설명:길이가 $ n $인 수열이 주어지고, 정수 $ m $ 이 주어진다.수열의 연속 부분 수열의 합이 $ m $ 으로 나누어 떨어지는 경우의 수를 구하는 문제다.핵심 포인트:직접 모든 구간의 합을 구하면 시간 복잡도가 $ O(n^2) $ 가 되어 시간 초과 가능성이 높다.누적 합(presum)과 나머지 연산을 활용하면 효율적으로 $ O(n) $ 내에 해결할 수 있다.접근 방법1. 누적 합과 나머지 활용누적 합 정의:$  S_i = \text{v[0]} + \text{v[1]} + \dots + \text{v[i]} $ 그러면 구간 $ [i, j] $ 의 합은 $ S_j - S_{i-1} $ 이다.나머지 이용:구간 합이 $ m $ 으로 나누어 떨어진다는 것은$$..
[C++] 백준/Silver/1024. 수열의 합
·
C++/Algorithm
수열의 합 (백준 1024번)문제 개요문제 설명:주어진 자연수 N 과 최소 길이  L이 있을 때, 연속된 자연수들의 합이  N이 되는 수열을 찾는 문제다.조건:수열의 길이는 최소  L이상이어야 하며, 길이가 100을 초과할 수 없다.수열에 포함된 수는 음수가 될 수 없다.만약 조건을 만족하는 수열을 찾지 못하면 "-1"을 출력한다.접근 방법문제를 효율적으로 해결하기 위해 수학적 접근법을 사용한다.연속된 $\text{len}$개의 자연수의 합을 수식으로 표현하면 다음과 같다.1. 연속된 수열의 합 공식연속된 $\text{len} $개의 정수 $ x, x+1, x+2, \dots, x+\text{len}-1 $의 합은:$$\text{Sum} = \text{len} \times x + \frac{\text{l..
[C++] 백준/Silver/15549. if
·
C++/Algorithm
문제: if (백준 15549번)문제 개요문제는 주관식으로, 자바 코드 내에서 아래 조건을 만족하는 변수 x의 타입과 값을 찾는 것이다.if (x != 0 && x == -x) { System.out.println("true");} else { System.out.println("false");}조건 분석조건을 만족하려면,x는 0이 아니어야 한다.x와 -x가 같아야 한다.일반적인 수학에서는 (x = -x)이면 (x)가 0이 되어야 하지만, 여기서는 0이 될 수 없으므로 특별한 상황(오버플로우)를 고려해야 한다.두의 보수와 오버플로우자바의 정수형(int)은 두의 보수(Two's Complement) 방식으로 표현된다.int의 범위: (-2^{31}) ~ (2^{31}-1) 즉, (-2147483..
[C++] 백준/Gold/1011. Fly me to the Alpha Centauri
·
C++/Algorithm
Fly me to the Alpha Centauri (백준 1011번)문제 개요문제 설명:우주선이 $x$에서 $y$까지 이동할 때, 이동 거리에 따른 일정한 규칙을 따르는 “점프”를 사용한다.문제는 주어진 시작점 $x$와 도착점 $y$ 사이의 거리를 이동하기 위한 최소 점프 횟수를 구하는 것이다.이동 규칙 요약:첫 번째 점프는 무조건 1광년, 그 이후 점프 거리는 이전 점프 거리와 같거나 1 증가/감소할 수 있다.마지막 점프도 무조건 1광년이다.이러한 규칙을 종합하면, 거리를 이동하기 위한 점프 횟수는 일정한 패턴을 따르게 되며,(예: 거리 1→ 1회, 2→ 2회, 3→ 3회, 4→ 3회, 5,6→ 4회, 7,8→ 5회, 9→ 5회, …)접근 방법수학적 아이디어:기존의 정답 공식은 다음과 같다.$n = ..
1. [Unreal 5] Epic Online Service - 초기 설정
·
Unreal 5/EOS
Epic Online Service?언리얼 엔진에서 멀티플레이를 구현하는 방법으로 데디케이티드 서버(Dedicated Server), 리슨 서버(Listen Server) 등의 방식이 있지만, 실제로 이를 불특정 다수의 플레이어가 접속할 수 있도록 만들려면 NAT 우회, 포트 포워딩 등의 네트워크 설정이 필요하다. 이는 우리가 일반적으로 접하는 상용 멀티플레이 게임과는 차이가 있다.EOS 소개 영상규모가 큰 멀티플레이 게임은 자체 전용 서버를 구축하거나 하이브리드 방식(P2P + 매치메이킹 서버 활용)을 사용하지만, 인디 게임이나 규모가 작은 멀티플레이 게임의 경우 언리얼 엔진 개발사인 Epic Games에서 제공하는 EOS(Epic Online Services)를 활용할 수 있다.EOS는 로그인, 클라..
[C++] 백준/Platinum/1786. 찾기
·
C++/Algorithm
문제: 찾기 (백준 1786번)문제 개요목표주어진 텍스트 문자열에서 패턴 문자열이 등장하는 모든 위치(인덱스)를 찾아, 등장 횟수와 위치를 출력하는 문제.핵심 포인트단순 문자열 검색(브루트포스)은 O(n×m) 시간 복잡도를 가짐KMP (Knuth-Morris-Pratt) 알고리즘을 사용하여 O(n+m) 시간에 해결1. 패턴 접두사 함수 (KMP 함수)목적패턴 문자열 내부에서 각 인덱스까지의 부분 문자열이 가지는 최대 접두사-접미사 일치 길이를 pi 배열에 저장예시 "ABABC"인덱스부분 문자열접두사-접미사 분석pi[i]0"A"접두사 길이 001"AB""B"와 "A" 다름02"ABA""A" (인덱스 2)와 "A" (인덱스 0) 일치13"ABAB"인덱스 3의 'B'와 인덱스 1의 'B' 일치24"ABABC"..
2. [Unreal 5] 언리얼 엔진의 렌더링 파이프라인 (Rendering Pipeline)
·
Computer Graphics
서론 이전 시간에 Unreal Engine에서의 렌더링 파이프라인에 알아보기 전에 기초적인 하드웨어(GPU)관점에서의 렌더링 파이프라인에 대해서 알아보았다. 이번 시간에는 Unreal Engine에서 사용하는 렌더링 파이프라인은 어떤 방식이며 그것에 대해서 알아보도록 하자.Forward rendering Unreal Engine에서 사용하는 파이프 라인은 기본적으로 디퍼드 렌더링(Deferred rendering)과 포워드 렌더링(Forward rendering)을 선택하여 사용하고 디폴트는 디퍼드 렌더링을 사용한다고 한다. 우선 디퍼드 렌더링에 대해 알기 전에 포워드 렌더링에 대해 간략하게 알아보자. 이전 시간에 GPU의 관점에서의 렌더링 파이프라인에 대해 알아보았다. 포워드 파이프라인은 이것에서 조금..
[C++] LeetCode/Hard/0745-prefix-and-suffix-search
·
C++/Algorithm
Prefix and Suffix Search (LeetCode 745)문제 개요문제 설명:주어진 문자열 배열 words에서, 특정 접두사(pref)와 접미사(suff)를 모두 만족하는 단어 중 가장 큰 인덱스를 반환하는 문제이다.문제의 어려움:단순한 선형 검색이나 해시맵 기반 방법으로는 모든 단어에 대해 접두사와 접미사를 확인해야 하므로 비효율적이다.따라서, 빠른 검색을 위해 Trie(트라이) 자료구조를 활용하는 최적화된 방법이 필요하다.접근 방식: Trie를 이용한 최적화핵심 아이디어:한 단어의 모든 가능한 접두사와 접미사 조합을 미리 Trie에 삽입해 놓는다.이를 통해 f(pref, suff) 함수 호출 시, suff + "{" + pref 문자열을 만들어 한 번의 탐색으로 원하는 단어의 인덱스를 찾..
1. [Unreal 5] 언리얼 엔진의 렌더링 파이프라인 (Rendering Pipeline)
·
Computer Graphics
서론 게임에서 무언가가 모니터 화면에 보여지고 있다는 것(렌더링)은 게임 엔진이 렌더링 파이프라인 이라는 정해진 과정을 열심히 수행하고 있다는 증거이다. 게임 엔진은 일반적으로 렌더링 파이프라인 이라는 것을 수행해 이미지 또는 프레임을 화면에 렌더링 한다. 본 게시글은 Unreal Engine에서 이 렌더링 파이프라인이 어떤 방식으로 이루어지고 어떻게 플레이어의 화면에 무언가를 렌더링 할 수 있는지에 대해 다루도록 하겠다.Rendering Pipeline? 렌더링 파이프라인의 과정에 대해 설명한 글은 정말 많다. 하지만 그 글들을 보면 과정이 조금씩 다르거나 똑같은 과정이라도 지칭하는 이름이 다르다. 렌더링 파이프라인은 렌더링의 목적에 따라 여러가지 종류의 렌더링 파이프라인이 존재하고, 설명하는 주체가 ..