본문 바로가기

전체 글107

[BruteForce] 백준 14888: 연산자 끼워넣기 14888번: 연산자 끼워넣기 (acmicpc.net) 재귀함수 호출을 통한 완전탐색 문제이다. input A_1, A_2, ... , A_n 이 주어졌을 때, 다음과 같은 재귀호출을 통해 답을 구한다. #include #include #include using namespace std;int maxValue = -1000000000;int minValue = 1000000000;void recursion(int currentValue, int numIdx, vector&numbers, vector&operators){ if(numIdx>=numbers.size()) { maxValue = currentValue>maxValue?currentValue:maxValue; .. 2024. 6. 2.
[ShaderGraph] Rendering Pipeline Rendering Pipeline이란, 컴퓨터가 데이터를 화면에 시각적으로 표현하는 일련의 과정이다. 매 프레임 이 과정이 반복되어 우리가 화면에 볼 이미지를 만들어 낸다. Rendering Pipeline의 각 과정은 다음과 같다. 이 설명은 내가 아주 대략적으로 이해한 내용을 바탕으로 하는 것으로, 보다 정확한 이해를 위해서는 컴퓨터 그래픽스를 제대로 배우기 위한 서적이나 강의를 참고해야 할 듯하다. 1. 그래픽 카드가 3D 모델의 vertex data를 수신하고, 이를 바탕으로 mesh를 생성한다.2. vertex shader에서 해당 mesh의 좌표 변환을 수행한다. 처음에는 로컬 좌표값만 가지고 있는데, 여기에 월드 변환 행렬을 곱해서 월드 좌표값으로, 다시 카메라 행렬을 곱해서 카메라를 고려한.. 2024. 5. 13.
[Algorithm] 정렬 알고리즘 - selectionSort(선택 정렬) void selectionSort(vector &A){ for(int i=0;iA[j]){ minIdx = j; } } swap(i, minIdx, A); }}각각의 i번째 element에 대해, [i+1, N) 번째 element와 비교하여, 그 중 가장 작은 element와 i번째 element를 교체한다. 시간복잡도는 O(N^2)이다. 주어진 배열(혹은 vector나 list)의 element들이 무엇이든 간에 오직 해당 배열의 크기 N만이 시간 복잡도에 관여하므로, 최선/최악의 경우 모두 시간복잡도가 같다. 2024. 5. 10.
[자료구조] Hash Table - (1) 앞서 Map을 다룰 때, key가 꼭 integer가 될 필요는 없음을 보았다. 만일 우리가 각 key를 (전체 길이 내의) 특정한 integer 값으로 바꿀 수 있다면, 이 integer 값을 index로 활용해 O(1) 시간에 map에 저장된 element에 접근할 수 있을 것이다. Hash Table이란 hash function을 이용해 구현된 map이다. hash function이란 바로 윗 문단에서 설명한 'key를 특정한 integer 값으로 바꿔 주는 함수' 이다. 이 때의 값을 'hash value' 라고 한다. 즉 어떤 pair (key, value)가 있고, hash function을 h(x)라고 하면, 이 hash table에서 value는 M[h(key)]에 저장된다. 보다 엄밀히 .. 2024. 4. 17.