전체 글 35

[Theory] 볼록 껍질을 이용한 최적화 (Convex Hull Trick)

다른 블로그 포스팅을 보면서 공부한 것을 정리한 글입니다. Convex Hull Trick은 특정 형태의 점화식을 사용하는 다이나믹 프로그래밍을 빠르게 계산하기 위한 방법입니다. 점화식은 다음과 같습니다. $$D_i = \min_{j B_b$) $D_i$의 최솟값을 구하기 위해 그래프의 개형을 구해봅시다. $i$가 같을 때는 $A_i$도 같은 값이니 $x$축을 $A_i$로 하여, $y = B_j \times x + D_j$를 그리면 다음과 같습니다. $j$가 커질 수록 직선의 기울기 $B_j$는 감소합니다. $y$축과 만나는 점인 $(0, D_j ..

C++/PS 2021.12.21

[BOJ/C++] 15896. &+ +&

문제 : https://www.acmicpc.net/problem/15896 15896번: &+ +& 길이 N의 자연수 수열 2개 A1, A2, ..., AN과 B1, B2, ..., BN이 주어진다. 다음 2가지 값을 구하여라. 모든 (Ai & Bj)의 합을 1999로 나눈 나머지 모든 (Ai + Bj)의 bitwise and 연산 값 여기서 &는 bitwise and 연산을 www.acmicpc.net 1. 설명 길이가 N인 수열 $A_1 , ... , A_N$ 과 $B_1 , ... , B_N$이 있습니다. $1 \le i,j \le N$인 모든 $i, j$에 대한 $A_i \cap B_j$ 의 합과 $A_i + B_j$의 & (bitwise AND) 연산 값을 구해야 합니다. 첫 번째 값의 경우 ..

C++/PS 2021.12.21

[BOJ/C++] 13705. Ax+Bsin(x)=C

문제 : https://www.acmicpc.net/problem/13705 13705번: Ax+Bsin(x)=C 첫째 줄에 정수 A, B, C가 주어진다. (0 < B ≤ A ≤ 100,000, 0 < C ≤ 100,000) www.acmicpc.net 1. 설명 정수 A, B, C가 주어집니다. 문제의 제목대로, Ax + Bsin(x) = C를 만족하는 x의 값을 구해야 됩니다. 거의 똑같은 문제로 14786번 문제가 있습니다. 둘 다 같은 식의 해 x를 구하는 것이지만, 13705번은 $10^{-7}$의 자리에서 반올림해야 하고, 14786번은 그냥 구하면 됩니다. 스페셜 저지냐 아니냐도 갈리는데, 이러한 차이만으로 난이도가 극단적으로 바뀌었습니다. 너무 헤매는 바람에 20트를 더 한 뒤에 Pyth..

C++/PS 2021.12.20

[게임 프레임워크 개발 일지] #2 SFML의 렌더링 정체와 Multi Thread

SFML 라이브러리에서 제공하는 기본적인 시스템 루프는 다음과 같습니다. 1. 대기 중인 Event Queue에서 처리할 이벤트를 하나 가져와서 처리한다. 처리할 이벤트가 없다면 2번으로 넘어간다. 2. 그래픽 렌더링을 처리한다. 3. 윈도우가 열려 있는 동안, 위 과정을 반복한다. 여기서 이벤트를 갖고 오기 위해 사용하는 메서드가 pollEvent입니다. waitEvent는 현재 처리할 이벤트가 없는 경우, 이벤트가 발생할 때까지 대기하는 반면, pollEvent는 처리할 이벤트가 없다면 기다리지 않고 넘어갑니다. 문제가 발생하는 지점도 비슷합니다. 이벤트를 빠르게 처리했거나 처리할 이벤트가 없다면, 바로 2번으로 넘어가 렌더링을 수행할 수 있습니다. 다만 처리할 이벤트가 너무 많은 경우에는 렌더링으로..

C++/Game 2021.12.17

[게임 프레임워크 개발 일지] #1 Roadmap

몇 달쯤 전부터 게임 엔진을 만들어야겠다는 생각을 하게 되었습니다. 말은 게임 엔진이지만, 사실 그리 거창한 건 아니라서 물음표를 붙였어요. * 2022-02-13 수정 : 그리고 프레임워크라고 보는 게 맞겠다는 생각에 제목을 다 수정했지. 글은 귀찮으니 수정 안함 으레 게임 엔진이라고 하면 Unity나 Unreal Engine을 떠올리기 마련인데, 지금 구상 중인 게임 기획은 상용 엔진에서 구현하기엔 무리가 있더군요. Unreal Engine은 사실 3D 게임을 위한 엔진입니다. 아직 우리 팀은 제작 팀이라기보다 생초짜 두 명이 재밌는 거 해보겠다고 뭉친 게 전부인지라, 3D를 할 깜냥도 안 되고, Unreal을 써야겠다고 느낄만한 기획도 해 본적이 없습니다. Unity Engine은 기본은 3D이지만..

C++/Game 2021.12.16