본문 바로가기

분류 전체보기142

FLOPS Flops는 floating point operations per second의 준말로 flops, flop/s라는 표현으로도 사용된다. 이는 1초동안 컴퓨터가 수행할 수 있는 부동 소수점 연산의 횟수이다. 컴퓨터의 performance를 나타내는 지표로 floating point 계산이 필요한 연산 능력을 측정하는데 유용하다. Flops와는 또 다른 개념으로 instructions per second가 있는데 이는 구분되는 개념이다. 먼저, Floating point는 부동 소숫점으로 실수를 나타낼 수 있는 표현 방식이다. Floting point 연산은 매우 크거나 작은 실수 연산에 필요하다. Floting point는 32-bit 포맷을 single precision이라 정의하고, 64-bit 포맷.. 2023. 10. 25.
[OpenGL] GLUT 먼저 OpenGL은 라이브러리가 아닌 API 규격이다. 함수의 이름, 기능, 인자, 작동 방식 등이 설명된 것이다. OpenGL에 명세된 내용은 그래픽 처리 장치 제조 업체에서 구현한다. 엔비디아, AMD, 인텔 과 같은 제조업체에서 구현되어 드라이버와 함께 그래픽 카드에 탑재된다. 이렇게 작성된 코드들을 라이브러리처럼 사용하게 된다. GLUT이란 OpenGL 유틸리티 툴킷으로 운영체제로부터 독립적이고 이식성이 좋은 코드를 구현하기 위해 개발되었다. GLUT 외에도 GLFW (Graphics Library Framework) 또한 유틸리티 라이브러리이다. 유틸리티 라이브러리는 GLFW, GLUT, FreeGLUT, GLU 등 다양하게 존재한다. 하지만 GLUT와 GLU는 1998년 이후로 업데이트 되지 .. 2023. 9. 11.
2차원 Vector Sort 방법 2D Vector Sort 코딩 문제를 풀기 위해서 2차원 Vector를 Sorting 해야 하는 경우가 있다. 특정 rule을 적용해 원하는 결과를 얻기 위해서 Vector가 Sorted 상태여야 하는 경우가 그렇다. 보통 Interval로 표현되는 문제들이 대표적인 예다. Cpp에서는 헤더를 통해 기본적인 vector sort 기능을 제공한다. 기본 API는 1D vector를 입력받는 걸로 설계되어 있고, 2D vector나 정렬 조건을 customize 하고 싶은 경우가 생긴다. 아래는 2D vector를 1st idx 기준으로 sorting 하는 함수이다. 코딩 문제를 풀다보면 때떄로 필요하니 익혀놓자. (그냥 머리에 심어놓는게 편하다.) bool cmp(vector &v1, vector &v2.. 2023. 8. 10.
Sliding Window (슬라이딩 윈도우) TC O(N) Technique Sliding Window Sliding Window란, 배열의 첫번째 인덱스부터 차례대로 접근하되, 해당 인덱스에서 다시 일정 범위 내 원소들에 접근하는 방법이다. 원소의 개수가 N개, Window 크기가 K 개라면, 총 N x K 번의 인덱스 접근이 발생한다. K가 매우 클 때 이러한 방법은 Brute Force와 같아지고 Time Complexity : O(n^2)이 된다. 코딩 문제에서 Window 크기 K가 고정되어 있다면 난이도가 낮은 문제로 Sliding Window 개념만 구현해주면 된다. 만약, Window 크기도 변수로 설정된 문제라면 난이도가 중간인 문제이고, 이때는 Time Complexity가 O(n^2)이 아닌 O(n)으로 문제를 풀 수 있는 알고리즘을 생각해야 한다. Time .. 2023. 8. 1.
배열에서 연산의 최댓값 혹은 최솟값을 가지는 2개의 값 찾기 문제 (Two Pointers) 코딩 문제 int 배열이 주어졌을 때, 합이 최대가 되는 2가지 Element를 찾아라. (합 연산이 곱셈, 뺄셈 등의 연산으로 바뀔수도 있고, 각 연산 외에 또다른 연산 방법을 적용한 것일 수도 있다. 연산의 종류와 관계 없이 배열에서 특정 연산의 최댓값 or 최솟값을 찾는 2가지 Element를 찾아야 하는 문제로 추상화 가능하다.) 이번 글을 정리하게 된 이유는 아래 문제 때문이다. (LeetCode 11. Container With Most Water) https://leetcode.com/problems/container-with-most-water/description/?envType=study-plan-v2&envId=leetcode-75 Container With Most Water - L.. 2023. 8. 1.
Container에서 최댓값 (최솟값) 혹은 N번째 최댓값 (최솟값) 찾기 Container에서 최댓값 (혹은 최솟값)을 찾거나 N번째의 해당 값을 찾는 문제를 푸는 방법 1. Container를 정렬한 후 N번째 혹은 최대(최솟값)을 찾는다. 2. Heap 자료구조를 사용하여 Heap 속성을 유지하는 이진 트리를 만든 후, Root 노드에 접근하여 최댓값 (혹은 최솟값)을 찾거나 N번 Pop을 실행해 원소를 찾는다. 2번의 경우 Container를 정렬하지 않고 시간 복잡도 O(log n)으로 문제를 풀 수 있다. 코딩 문제로도 내기 좋은 문제인듯? 정렬을 쓰지 않아야 하는 조건이 있고, 시간 복잡도도 물어볼 수 있겠다. 2번을 사용하기 위해서는 Heap 자료구조에 대한 이해가 필요하다. 이는 아래 포스팅을 참고하자. [자료구조] 힙(Heap), 우선 순위 큐 Heap, 힙 .. 2023. 7. 30.