본문 바로가기

CS

(15)
[가볍게 읽는 CS] TCP vs UDP TCP/IP와 UDP는 통신의 가장 기본적인 요소이다.TCP(Transmission Control Protocol)는 데이터 손실이 없고 신뢰할 수 있는 통신이며,UDP(User Datagram Protocol)는 데이터 손실을 감수하면서 빠른 통신을 보장한다.이러한 차이는 TCP 통신이 신뢰할 수 있는 통신을 진행하기 위해 확인 단계를 거치고, 새롭게 통신할 때마다 데이터를 잘 수신했는지 확인하고, 수신하지 못한 경우에는 재전송하는 과정이 있기 때문이다. TCP와 UDP는 기술면접에서 면접자의 기본기를 확인하기에 적합한 기본적인 내용 중 하나라고 생각한다.그렇기 때문에, 지원 분야가 어디든 반드시 알고 있길 바란다. TCP와 UDP의 공통점1. 둘 다 전송 계층 프로토콜TCP와 UDP는 OSI 7계층과..
[영상처리] NV21과 YV12의 차이점 앞선 글에서 Bitmap과 YUV의 차이점을 알아보며, YUV 데이터가 실제로 사용되기 위해선 코덱이 지원하는 데이터 포맷으로 가공되어야한다는 점을 언급했다.보통 안드로이드의  CameraX Analysis가 방출하는 row데이터는 YUV420_888 Color format이다.안드로이드에서 이 데이터를 영상 프레임같은 곳에 사용하기 위해선 NV21이나 YV12데이터로 변환해 주어야한다.그럼 NV21은 뭐고, YV12은 뭘까? 이 둘의 차이점은 YUV데이터 중 색차 정보인 U와 V의 저장순서이다. 이미지로 보면 이렇다. NV21은 효율적인 메모리 접근이 가능하다. 위 이미지에서 확인 가능하듯, U와 V가 교차하여 존재하기 때문에 메모리 접근이 효율적이다.반면, YV12는 V와 U의 값이 별도의 평면에 배..
Bitmap과 YUV의 차이점 이번에 개인 사이드 프로젝트로 앱을 만들며, 이미지를 처리를 경험하게되었다.지금까지 Camera를 사용하면 무조건 Bitmap을 사용해 왔는데, 이번에는 YUV color format을 위주로 사용하게되어 많이 해맸었다.그래서 정보를 찾아보며 알게된 둘의 차이점과 공통점을 정리해 두려 한다. 차이점색상 표현 방식Bitmap은 RGB 색상 모델을 사용하여 각 픽셀의 Red, Green, Blue 값으로 색상을 표현한다.YUV는 휘도(Y)와 색차(U, V) 성분으로 색상을 표현하는 모델이다. Y는 밝기 정보를, U(색차 B-Y)와 V(색차 R-Y)는 색상 정보를 가지고 있다.대역폭 효율성RGB 모델은 각 픽셀마다 3개의 값(R, G, B)을 가지므로 대역폭 요구량이 크다. 그래서 리소스를 많이 소모한다.YU..
[Kotlin] DFS, BFS 기본 구현 DFS와 BFS는 대표적인 그래프 탐색 알고리즘이다. 가장 머리 속에 남아있는 설명은 학부시절 들었던 설명인데, "DFS는 내가 보려는 드라마 시리즈들을 쭉 정주행 하는 것이고, BFS는 한 회씩 두루두루 보는 것이다." 라는 것 기본 구현에 익숙해지면 응용하는 문제들을 해결하는 데에 도움이 되기 때문에, 백지에 바로 작성이 가능해 질 때까지 보는 중.. 📎 백준 1260 문제를 바탕으로 글을 작성한다. Depth-First Search(DFS) 보통 Stack 혹은 재귀를 사용해 구현한다. 각 방법의 기본 구현 코드와 해당 방법을 사용했을 때의 장점을 살펴보겠다. Stack을 사용한 구현 fun dfsWithStack(graph: ArrayList, index: Int) { val visited = M..
[Kotlin] 백준 2178 (ft. BFS) 📚 백준 2178 BFS 문제 직접 풀어보려는 사람들을 위해 접근 방법에 대한 힌트부터 작성한다. 전체 코드는 최하단을 확인 바람 미로 탐색 문제 유형을 채험해 보는데 가장 좋은 문제라고 생각된다. 일반적으로 이런 문제는 큐(Queue)에 현재 위치의 행과 열의 인덱스를 저장한다. 이 문제의 경우, 각 칸을 방문할 때마다 해당 칸까지 이동하는 데 필요한 최소 이동 횟수를 계산하면 된다. 나는 위치 정보 저장을 위한 큐(Queue)와 이동 횟수 저장을 위한 2차원 List를 사용했다. 그리고 현 위치를 기준으로 상하좌우 한칸씩만 검사해주며 진행하는 방식으로 풀었다. 큐에 저장할 값 - 위치 정보: 현재 위치의 행과 열 인덱스, 예를 들어 현재 위치가 2행 3열이면, Pair(2, 3)으로 큐에 저장했다. ..
[백준/Python] 1110: 더하기 사이클 ‣​ 문제 링크 https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net ‣​ 접근 방법 문제를 잘 따라가면 접근 방법을 파악할 볼 수 있다. 문제의 예시처럼 26을 통해 접근방법을 생각해보자. 26은 10보다 크기 때문에 26이 유지된다. 각 자리수를 더해서 얻을 수 있는 수는 2+6 = 8이다. 그럼 새로 만들어지는 수는 26의 1의 자리수인 6과 각 자리수를 더해 얻은 8의 1의 자리수인 8이 붙여 68이 된다. 아직 68과 26은 ..
에라토스테네스의 체 ‣ 에라토스테네스의 체(Eratosthenes' sieve)고대 그리스의 수학자 에라토스테네스가 고안한 소수를 찾는 알고리즘아래의 사진처럼 마치 체를 치듯이 수를 걸러내어 소수만 남기기 때문에, 에라토스테네스의 체 라고 부른다. ‣ 동작 방식에라토스테네스의 체는 임의의 정수 n이 있으면 그 이하의 소수들을 O(nloglogn)O(nloglogn)O(nloglogn)의 시간 복잡도로 전부 찾아낼 수 있는 상당히 효율적인 알고리즘이다. 에라토스테네스의 체는 다음과 같은 원리로 진행된다.각 수에 대해 그 수의 배수를 모두 제거하는 작업을 수행한다.2의 배수를 제거할 때 n2 \frac{n}{2}2n​ 번, 3의 배수를 제거할 때 n3 \frac{n}{3}3n​ 번, 4의 배수를 제거할 때 n4 \frac..
[백준/Python] 13909 창문 닫기 ‣​ 문제 링크 https://www.acmicpc.net/problem/13909 13909번: 창문 닫기 서강대학교 컴퓨터공학과 실습실 R912호에는 현재 N개의 창문이 있고 또 N명의 사람이 있다. 1번째 사람은 1의 배수 번째 창문을 열려 있으면 닫고 닫혀 있으면 연다. 2번째 사람은 2의 배수 번째 www.acmicpc.net ‣​ 접근 방법 창문의 상태가 바뀌는 것은 해당 창문 번호의 약수의 개수와 관련이 있다. 예를 들어, 12번 창문의 경우 1, 2, 3, 4, 6, 12의 6개 약수가 있으므로 6번 상태가 바뀌게 된다. 그럼 0에서 6번 상태가 바뀐 12는 최종적으로 어떤 상태일까? 아래는 12번째의 창문의 상태가 자신의 약수번째 사람일 경우 어떻게 바뀔지 표로 나타낸 것이다. 1 2 3..