𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐶𝑆

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐶𝑆

[알고리즘] 시간 복잡도, 빅오 표기법(Big-O notation)

코딩테스트 풀이를 풀다보면 굉장히 많이 다루게 되는 시간 복잡도. 블로그에도 몇 번 언급한 적이 있는데, 어렴풋이 알고있는 개념이지만 오늘 예제를 통해 더 자세히 알아보도록 하자! 시간 복잡도란? 먼저 시간 복잡도란 무엇일까? 컴퓨터 공학에서는 알고리즘의 기본 동작을 실행할 때 특정한 시간이 소요된다고 추정한다. 그리고 시간 복잡도란, 이러한 알고리즘의 동작들을 실행하는 데에 총 소요된 시간을 나타낸 것이다. 쉽게 설명하면 알고리즘 수행에 필요한 단계의 수가 알고리즘의 효율성을 결정하는 주된 요인이라는 것이다. 당연하게 들릴 수 있지만, 알고리즘은 연산이 많아질 수록 그 연산 속도가 오래걸린다. 즉, 시간 복잡도는 알고리즘 내 연산 단계의 횟수의 영향을 받는다. 빅 오 표기법 (Big O notation..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐶𝑆

메세지 큐 (Message Queue)

원티드에서 진행하는 프리온보딩 Kotlin 및 백엔드 과정을 신청했다! 각 과정 별 준비해야하는 간단한 사전 과제가 있었는데, 그 중 하나가 메세지 큐에 대해 공부해보는 것이었다. 백엔드 직무 우대사항이나 자격요건에 메세지 큐를 필요로 하는 회사가 많았어서 언젠가 계속 정리해야지 했었는데 이 기회로 드디어 메세지 큐를 정리하게 되었다 ^ㅅ^! 내가 생각하기에 메세지 큐는 말 그대로 메세지들을 큐라는 자료 구조에 담아 관리하는 의미라고 생각된다. MOM(Message Oriented Middleware: 메세지 지향 미들웨어)를 구현한 시스템을 MQ(Message Queue)라고 한다. 그렇다면 MOM이란 무엇일까? 메세지 지향 미들웨어 (MOM) MOM은 비동기 메세지를 사용하는 프로그램 간 데이터 송수..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐶𝑆

동기와 비동기, 블로킹과 논블로킹

얼마전에 SingleTon 패턴을 정리하면서, 쓰레드를 이용한 적이 있다. 쓰레드에 대한 정리는 이전에 했었는데, 오늘은 이 쓰레드의 바탕이 되는 동기, 그리고 비동기와 많이 혼동되는 개념인 블록(Block) 과 논블록(Non-Block)에 대해서도 간단히 알아보자! 데이터를 받는 방식에는 동기식 처리와, 비동기식 처리라는 두가지의 방식이 있다. 동기 (Synchronous) Synchronous 의 사전적 뜻은 다음과 같다 : happening, existing, or arising at precisely the same time. 무슨 말인가 하면, 정확히 같은 시간에 발생, 존재하는 것이다. 즉, 동시에 일어난다는 것이다. 많은 포스팅에서는 동기를 '데이터의 요청과 결과가 한 자리에서 동시에 일어나..

기누
'𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐶𝑆' 카테고리의 글 목록