[C++, STL] 알고리즘 문제풀이를 위한 우선순위 큐(priority queue)

서론 우선순위 신용카드 신청을 위해 상담사와 통화를 했다. 급하게 받아야 해서 금요일까지 수령할 수 있겠냐고 여쭸더니 긴급으로 발송해주겠다고 한다. 원래는 신청받은 순서대로 발송을 하겠지만 내 카드는 우선순위를 높여서 먼저 발송해 줄것이다. 큐와 우선순위 큐 [C++, STL] 알고리즘 문제풀이를 위한 큐(queue) 우선순위 큐는 우선순위가 포함된 자료가 들어간다. 그러면 큐 내부에서 pop을 했을 때 가장 우선순위가 높은 … Read more

[C++, STL] 알고리즘 문제풀이를 위한 스택(stack)

서론 쌓여있는 접시 초밥과 LA갈비를 동시에 먹고 싶었던 나는 뷔페에 갔다. 그리고 음식을 담기 위한 접시를 집으려던 순간, 직원이 내가 집으려던 접시 위에 새로운 접시들을 또 쌓았다. 새로 올려진 접시에는 물기가 가득했다. 물기가 없는 처음 보았던 접시를 가져가고 싶지만 가져갈 수 없다. 이미 그 위에 많은 접시들이 쌓여있기 때문이다. 자료를 쌓는 스택 스택을 번역하면 명사로는 … Read more

[C++, STL] 알고리즘 문제풀이를 위한 큐(queue)

서론 줄을 세우다 어느 중학교, 점심시간을 알리는 종과 함께 학생들이 달린다. 배식을 먼저 받기 위해서는 달려야한다. 한참을 달리던 학생들은 식당 입구에서 식권을 내고 한줄로 천천히 배식구를 향해 걸어간다. 이들은 더이상 뛰지 않는다. 먼저 식권을 낸 학생이 먼저 배식을 받을것을 알기 때문이다. 그래서 큐는 뭐지? 큐는 먼저 들어온 자료가 먼저 나가는 자료구조다.(=선입선출, First In First Out) … Read more

[C++, STL] 알고리즘 문제풀이를 위한 벡터(vector)

서론 우리는 다수의 자료를 저장하기 위해 배열을 사용한다. 그러나 배열은 임의의 위치에 원소를 삽입하거나 할당된 메모리가 꽉 찼을때 등 여러 상황에서 까다로운 문제가 발생한다. 이를 해결하기 위해 동적배열을 사용한다. 동적배열은 사용하면서 원소가 추가되면 메모리를 조금씩 추가 할당하며 대표적으로 리스트, 벡터가 있다. 리스트는 배열이 가지는 위 단점을 해결할 수 있다. 그러나 배열과 벡터는 원소에 직접 접근하여 … Read more

시간 복잡도 표기법 빅오, 빅오메가, 빅세타

* 시간 복잡도를 처음 접한다면 아래 글은 이해하기 어려울 수 있습니다. 시간 복잡도 같은 목적지를 향해 가는 길이 여러 갈래일 때 우리는 더 빠르게 도착하는 길을 찾는다. 마찬가지로 동일한 목적을 가지는 기능을 여러 알고리즘으로 구현했을 때 그것들의 효율성을 비교하기 위해 시간 복잡도를 사용한다. 당연히 더 오래 걸리면 더 안 좋다. 알고리즘A의 시간복잡도가 O(n)이고 알고리즘B의 시간복잡도가 … Read more

1080p 1080i 차이(Progressive, Interlaced)

1080p, 1080i 유튜브에서 720p, 1080p 등 화질을 선택할 수 있다. 그리고 어떤 TV는 전원을 켜면 1080i라고 표시해준다. p와 i는 Progressive(프로그레시브), Interlaced(인터레이스드)인데, 영상 출력 방식을 나타낸 것이다. Interlaced(인터레이스드) 인터레이스드 방식은 한 장의 이미지를 홀수열과 짝수열로 분할하여 홀수열 이미지, 짝수열 이미지를 빠르게 순차 출력하여 분할되지 않은것 처럼 보이게 출력한다. 이미지를 홀수열과 짝수열로 분할하여 출력하면 이미지를 한 장 … Read more

비트맵(bitmap) 이미지 용량 계산

서론 압축을 하지 않는 비트맵 이미지는 해상도를 알 경우 용량의 근삿값을 알아낼 수 있다. 비트맵은 8비트, 16비트 등도 있지만 현재 가장 많이 사용하는 24비트 비트맵을 기준으로 용량을 계산해본다. 비트맵 이미지 용량 계산 디지털 이미지는 이미지의 한 점에 해당하는 픽셀들을 나열하여 한 장의 이미지를 만들어낸다. 그리고 우리가 말하는 해상도는 픽셀의 개수이다. 예를 들어 해상도가 1920×1080이면 가로 … Read more

이미지 더블버퍼링(이중버퍼링) 개념

영상 스트리밍에서의 버퍼 우리가 보는 영상은 카메라(이미지센서)로부터 입력받아서 디스플레이로 출력된다. 이때 카메라로부터 입력받은 이미지들은 내부적으로 영상처리 과정을 거쳐야하고, 입력장치(카메라)와 출력장치(디스플레이)의 속도차이로 인해 입력받은것을 바로바로 출력하지 못하는 경우도 존재하는 등 여러 이유로 입력받은 이미지를 버퍼에 임시 저장한 후 출력한다. 시스템에 따라 버퍼를 하나만 사용하거나 둘, 셋 이상을 사용하는 방식도 있다. 여기서 버퍼를 둘 사용하는것이 더블버퍼링이며 버퍼를 … Read more

스위치 배선과 NO, NC, C, +, – 단자 뜻

NO, NC, C, +, – 사진과 같이 일반적으로 스위치에는 NO, NC, C 단자가 있다. C 단자 스위치는 회로에 직렬로 연결되어 단락 여부를 결정한다. 그래서 회로를 끊고 스위치로 두 회로 사이를 이어주어야 한다. C 단자는 끊어진 한쪽에 연결한다. 스위치는 방향성이 없기 때문에 끊어진 두 곳 중 어디든 상관없다. NO 단자 NO는 Normally Open의 약자로 일반적으로 스위치 … Read more

3V3, 1V8, 4K7 등의 뜻

회로도를 보는데 3V3이 나와서 찾아봤다. 간단하게 3V3은 3.3V, 1V8은 1.8V, 4K7은 4.7kohm이다. 즉 점(.) 대신에 문자를 쓴 것이다. 위와 같이 사용하는 정확한 이유는 모르겠으나 인터넷에서 본 의견은 다음과 같다. 이유야 어쨌든 실제 사용되고 있기 때문에 알아야 한다.