개발

Computer Science와 관련된 활동을 기록하는 페이지입니다.
들어가며    오랜만에 글을 적는다. 오늘은 셀 셰이딩(툰 셰이딩)에 대한 글로, 포스트 프로세싱을 통해 카툰 스타일을 구현하는 방법에 대해서 이야기해보고자 한다.     사실 기획에 대해 이야기하고 싶은 것도 많지만, 아직은 조금 더 고민할 시간이 필요하다고 생각했다. 최근에 단기 팀 프로젝트를 하고 있는데, 그 과정에서 나의 현실적인 기획을 돌아보게 됐다.     이 과정에서 작년 9월에 정의한 나의 이상적인 기획과 현실적인 기획 사이의 괴리, 그리고 그 괴리를 매우기 위한 방법에 대해 고민하고 있는데, 이것들에 대해서는 작년과 마찬가지로 조금 더 깊게 고민한 후 정리할 필요가 있어 보였다.     그래서 오늘은 기획이 아닌 기술, 그중에서도 셀 셰이딩을 구현해 본 과정에 대해 글을 쓰겠다.  셀 셰..
⚠ 주의! '들어가며' 내용이 너무 삼천포로 빠짐! 하지만 적고 싶음! 한 줄로 정리하면 '액션 연출을 연구해 보려는데 모델링이 필요했고, 합법인 원신을 선택했다.'로 요약할 수 있다. 바로 본론으로 들어가고 싶다면 '들어가며'는 스킵하도록 하자. 들어가며    최근 종강 이후에 진행할 프로젝트로 아카이브를 준비하고 있다. 그리고, 그 과정에서 아카이브의 첫 번째 주제로 이전에 하다 만 관능성(官能性), 그중에서도 속도감에 대한 연구를 진행하려고 한다.     속도감이라는 주제를 첫 번째로 선택한 이유는 (이하 퍼디)의 애니메이션 팀에서 작성한 개발자 노트가 인상 깊었기 때문인데 이 때문에 가능하면 퍼디 내 캐릭터, 그중에서도 버니를 모델로 연구를 진행해보고 싶었다.   퍼스트 디센던트 tfd.nexon..
문제 접근 입력으로 주어지는 n의 최대 크기는 100경이므로, $O(n)$으로는 절대 풀이하지 못한다. 피보나치 수열의 식 $F(n) = F(n-1) + F(n-2)$을 변형해서 접근하자. 일반항 $F(n) = \frac{1}{\sqrt{5}} \times (\frac{1+\sqrt{5}}{2})^2 - \frac{1}{\sqrt{5}} \times (\frac{1-\sqrt{5}}{2})^2$로 변형하여 바로 풀이하자. https://www.acmicpc.net/problem/11444 11444번: 피보나치 수 6 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 코드 : 일반항으로 시도 - 부동 소수점 이슈로..
목적 : 가설을 세우고 수학적, 논리적으로 무결한 근거를 마련할 수 있는 문제 대응력 키우기. 목표 : Class 5 기본 문제를 풀이하며 증명하는 과정을 기록하기. 전략 : 문제를 해결했다는 결과에 집중하기보다는 접근 과정에 집중하며 기록한다. 주의점 재미있게 하자. 습관적으로 강박을 갖는 경향이 있는데 이렇게 되면 단기적으로 어떤 성과를 거둘 수는 있어도 장기적인 관점에서는 손해다. 결정적으로 금세 지루해지고 재미가 없어진다. 동기 작년에 2023 알고리즘 레콩키스타라는 프로젝트를 시작하고 일주일만에 흐지부지됐던 경험이 있다. 이 프로젝트에 올해 다시 한번 도전해보려고 한다. 단, 조건을 조금 바꿔서! 이전 알고리즘 레콩키스타의 목적은 PS 감각의 회복(쥐뿔도 없지만..)이었으며, 목표는 Class ..
문제 접근 연산자를 저장하는 stack을 만들자. 표기식의 우선 순위를 고려해서 stack와 상호 작용하자. 괄호 표기식이 최상위, 곱셈과 나눗셈 표기식이 그 다음, 덧셈과 뺄셈이 최하위다. 따라서, 표기식을 stack에 push하기 전에 stack의 top에 해당하는 표기식의 우선 순위가 push하려는 표기식의 우선 순위보다 상위에 있거나 같다면, 우선 순위가 낮은 표기식이 top이 될 때까지 출력하고 pop한다. 예 : 괄호는 곱셈보다 우선 순위가 높기에 stack에 push해도 되기만, 덧셈은 곱셈보다 우선 순위가 낮기에 stack된 계산인 곱셈을 출력 및 pop한 뒤에 더 이상 덧셈에 우선해 처리할 계산이 없을 때 push한다. https://www.acmicpc.net/problem/1918 1..
문제 접근 BFS로 풀이한다. 최단 거리는 별다른 특이사항이 없다면 BFS로 푸는 게 깔끔하다. 이 문제 역시 BFS로 단순하게 해결할 수 있는 문제였다. 목표 지점에서부터 탐색한다. 이번에는 시작점과 목표점이 N:1이어서 쉽게 목표점부터 탐색하자고 생각할 수 있었다. 만약 1:1이라고 하더라도 역으로 탐색을 하는 게 이로운 상황이 있으니 잘 살펴보고 설정하도록 하자. https://www.acmicpc.net/problem/14940 14940번: 쉬운 최단거리 지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은 가로의 크기다.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) 다음 n개의 줄에 m개의 숫자가 주어진다. 0은 갈 수 없는 땅이고 1은 갈 수 있는 땅, 2는 목표지점이 www.ac..
문제 접근 값을 입력받을 때 합 배열을 만들어 간단하게 부분 합을 구하자. 별 다른 특이 사항은 없다. 입력받을 때 각 인덱스까지의 합을 저장하는 배열을 만들고, 추후 끝에서 시작을 빼는 방식으로 사이의 부분 합을 구할 수 있다. https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 문제 코드 #include #include using namespace std; int main(void) { ios_base::sync_with..
문제 접근 Factorial 계산 과정에서 필요 없는 것들은 날리자. N이 500이면 오버플로우가 생길 것 같아서 계산 과정에서 날릴 수 있는 것들은 날리기로 했다. 이에 뒷자리가 0인 경우, 어떤 수와 곱해도 0은 유지된다는 특성으로부터 계산 과정의 뒷자리에 0이 올 때마다 자릿수를 내리고, 답에 1을 추가하는 방식으로 구현했다. 문제 : 500이면 0을 제외해도 자릿수 자체가 크기 때문에 여전히 오버플로우가 발생한다. 10을 만드는 수를 필터링해서 아예 곱셈을 하지 않아도 되게 나머지를 다 날리자. 중학교 때쯤 배웠던 지수 곱셈이 생각났다. 1부터 N까지의 어떤 수든 분해하면 $x^{a}\times y^{b}\times z^{c}$ 와 같은 형태로 표현된다. 이때 10을 만드는 수는 2와 5이므로, ..
AeonFlor
'개발' 카테고리의 글 목록
상단으로