Big-O notation and complexity(big-O 표기법과 복잡도) Examples
Overview 몇가지 예시를 통해 big-O표기법에 대해서 이해합니다. 예시 여러개의 문자열을 각각 정렬하고 전체 list에 대해서도 정렬하는 경우 총 N개의 문자열이 있다고 하자, 이때, 각각의 문자열을 알파벳 순으로 정렬하고, 전체 문자열 목록을 사전(Dictionary)순에 따라 정리하는 예시입니다. 이 경우, 문자열 1개를 ...
Overview 몇가지 예시를 통해 big-O표기법에 대해서 이해합니다. 예시 여러개의 문자열을 각각 정렬하고 전체 list에 대해서도 정렬하는 경우 총 N개의 문자열이 있다고 하자, 이때, 각각의 문자열을 알파벳 순으로 정렬하고, 전체 문자열 목록을 사전(Dictionary)순에 따라 정리하는 예시입니다. 이 경우, 문자열 1개를 ...
문제 요약 두 문자열, str1과 str2에서 각각 반복되는 최대 길이의 문자열중 공통된 부분(’x’로 표기)을 찾습니다. 문제 풀이 첫번째 시도 처음에는 문제를 이해하지 못하고(최대공약수 문제인지 모르고), 풀려고 했습니다. 여러 접근법이 머리에 떠오릅니다. str1과 str2를 byte code로 바꾸어서, 각각 ‘-’연산을 하면 0...
‘merge sort’는 ‘Divide and conquer(분할과 정복)’을 사용한 대표적인 알고리즘입니다. 이 ‘Divide and conquer’는 문제를 작게 쪼개서 해결하고, 이를 다시 합침으로서 문제를 해결해 나가는걸 말합니다. ‘Divide and conquer’는 여러 문제해결의 기본이 되곤 하며, 앞으로 부딪히는 문제가 너무 크게...
‘bubble sort’는 가장 기본적인 sort algorithm(정렬 알고리즘)입니다. Time complexity and space complexity Time complexity(시간복잡도) 시간 복잡도는 다음과 같습니다 Best case Average Worst case ...
디스크에 있는 파일을 다른 지역의 친구에게 보낸다고 해보자. 대부분의 사람이, 이메일이나 FTP와 같은 network방식을 떠올리게됩니다. 하지만 파일의 크기가 1TB라면? 이럴때는 자동차를 타고 직접 전달하는게 빠르지 않을까? 이렇게 어떤 행위(컴퓨터에선 알고리즘을 의미)에 대한 비용을 어떻게 비교할까요? 여기선 컴퓨터에서 효율성을 비교하는 방법을 ...
목적 ‘vector embedding’은 NLP와 computer vision에서 그 효과를 입증했습니다. 여기서는 이 ‘vector embedding’을 비교(check similarity)하여 metric으로 만드는 3가지 방법을 알아봅니다. Euclidean distance ‘Euclidean distance’는 두개의 vector사이의 거...
Google의 V8엔진을 통해, javascript는 새로운 기회를 얻었습니다. 다른 script언어들과 다르게, javascript코드를 compile하여 machine code로 cache함으로써 성능을 극한으로 끌어 올렸습니다. 문득, V8이 생성하는 ‘Machine code’라는게 궁금해졌습니다. 그래서 직접 Machine code를 확인하고자...
Overview Engineer라면 한번쯤 ‘개인 Blog를 운영해야하나?’라는 생각이 들때가 있습니다. 이때, 쉽게 blog를 호스팅(hosting)하는 방법중 하나인 Github Pages를 사용하게 되는데, Jekyll를 통해 그 내용을 구성하게 됩니다. 여기선, ‘Jekyll’의 개념과 이를 이용해서 Blog를 만드는 방법을 다룹니다. ...
Multi-region이란 무엇인가? 서비스를 운영하는데 필요한 infra요소들을 여러 region에 걸쳐 운영하는것을 말합니다. Multi-region은 여러가지 목적으로 쓰이며, 주로 아래와 같은 상황에서 사용합니다. 서비스가 확장됨에 따라, 더 나은 Latency를 제공하기 위해서 Expansion to a global...
Monorepo(Monolithic repository)란? 하나의 repository(git repository)에서 여러개의 project를 관리하는, repository를 사용하는 전략중에 하나입니다. MSA(MicroService Architecture)에서 각 도메인 단위로 서비스를 분리하면서, 이 코드들을 관리하기위한 전략으로서 많이 쓰입니...