분류 전체보기 65

DynamoDB의 Hash key와 Sort key

DynamoDB의 Hash key와 Sort key에 대해서 알아보자. 이를 알아보기 전에 먼저 primary key에 대한 이해가 필요하다. DynamoDB에서는 테이블을 생성할 때 모든 attribute들에 대한 스키마를 미리 정의해 둘 필요가 없다. 오직 primary key (PK)에 대한 스키마만 테이블을 생성할 때 정의하면 된다. DynamoDB에서의 Primary Key PK에는 단일 PK(simple key)와 복합 PK(composite key) 두 가지 종류가 존재한다. 단일 PK는 하나의 attribute만을 primary key로 사용하며, 복합 PK는 두 개의 attribute들을 결합하여 사용한다. 복합 PK에서 첫 번째 attribute는 partition key, 두 번째 a..

[2차 코테 탈] 우아한 테크캠프 3기 지원 회고

미래의 내가 현재의 생각을 잊게 되면 빡대갈쓰야! 하고 다시 초심을 잡기 위해 써 보는 글이다. 고로 미래의 제가 아닌 다른 분들이 보실 경우, 다른 이에게 정보를 주려고 하는 글이 아닌 점을 감안하시고 읽어주십쇼. 알맹이 있는 이야기가 있을런지는 모르겠지만 누군가가 나에게 탈락이 뭐 그리 잘난 일이라고 이런걸 쓰냐 하신다면? 2차 코테 탈을 했으면 1차 코테 합격했으니 잘나지는 못하더라도 잘한 일이라고 할 것이고, 1차코테나 서류 탈을 했으면 서류를 냈고 코테를 열심히 봤으니 잘한 일이라고 할 것이다. 나는 능력 스탯 업그레이드 효율이 좋은 편은 아니기 때문에 닥치는 대로 경험치를 쌓아야 능력에 +1이 될까말까이므로, 탈락도 나에겐 좋은 경험치 획득 기회이다. 각설하고, 이야기를 시작해보도록 하자. 1..

[Data Structure] Heap

Heap의 기본 개념 (binary) heap 자료구조는 complete binary tree특성을 가지는 배열 객체이다. Heap 객체 구성 요소 heap을 나타내는 배열 A는 다음 두 개의 인자를 가진다. A.length 배열 A의 모든 원소의 개수를 나타낸다. A.heap-size 배열 A의 모든 원소가 heap에 속하지 않을 수 있다. $A[1..A.length]$ 의 값들 중, $A[1..A.heap-size]$에 속한 값만 heap 내부에 있는 원소이다. 배열 A의 원소 중 heap에 속하는 원소의 개수를 나타낸다. 단, $0\leq{A.heap-size}\leq{A.length}$ 를 만족한다. Heap index 계산 tree index의 편의를 위해, tree의 root는 A[1]이다. ..

VSCode Extension 오류 - vscode extension development host가 열리지 않을 때

그렇다. 큰 기대를 안고 VSCode extension hello world 예제를 실행해보려고 했는데, 오류 아닌 오류가 났다. 분명 MS VSCode Document - Your First Extension에 따르면, 그냥 짠짠짠 쉽게 설치 하고 F5 누르면 helloworld 예제 실행해 볼 수 있어~ 라고 해서 해보려고 했다. 근데 아무리 F5를 누르고 기다려도 열심히 building.... 표시만 뜨지 뭐 development host도 안뜨고 걍 노트북만 열심히 일하는 소리가 들렸다. 열심히 무한 빌딩만 할 뿐.. 그래서 열심히 구글링을 해 봤다. 소웨 4년 다니고 남은것은 구글링 Issue 모음 어떤 오류인지 실마리를 얻었던 과정 첫 번째로, 실마리를 얻었던 것은 Can't open vsco..

VSCode Extension - Your First Extension 따라해보기

만들어보고싶은 VSCode extension이 있어서 사실 내가 필요한데 나한테 딱 맞는 extension이 없어서 대망의 삽질을 시작해보려고 한다. 마음같아서는 빨리 밤 며칠 새고 뚝딱 만들었으면 좋겠다. 질질 끌면 피곤하잖아...꼬부가 알겠니? 이 글은 성공적으로 VSCode extension을 만들어보고 쓰는 글이 아니다. 그냥 삽질을 위한 첫 삽을 뜬 내가 앞으로 몇번의 삽질을 할지 기대되어 기록하는 것이니, 참고하시도록. MS VSCode Document - Your First Extension yo code 오... yo code 라니.. 매우 힙한걸? 이 명령어 생각할 때 마다 힙찔이가 마이크로 내 귀에 yo code 속삭이는 느낌. 아무튼, 얘는 이제 vscode extension을 만들기..

[Algorithm] Heap Sort (힙 정렬)

Heap sort는 heap 자료구조를 기반으로 진행한다. 이 글은 heap 자료구조의 기본 프로시저인 MAX-HEAPIFY, BUILD-MAX-HEAP의 수도코드 및 수행 시간 분석에 대한 이해를 기본으로 한다. heap 자료구조의 기본 프로시저의 수도코드 및 수행 시간 분석은 [Data Structure] Heap에 정리되어 있으므로, 이 페이지에서는 설명을 생략한다. Pseudo Code HEAP-SORT(A) BUILD-MAX-HEAP(A) for i = A.length downto 2 exchange A[1] with A[i] A.heap-size = A.heap-size - 1 MAX-HEAPIFY(A, 1) 수행 시간 분석 BUILD-MAX-HEAP이 $O(n)$ 시간이 걸린다. 여기에 $O..

#define 의 함정... 나만 빠짐

음.. 뭔가 쓰려고 하니까 민망하긴 하지만 나색기 이런것도 까먹었음을 만천하에 공표하는 느낌으로다가 이제 안까먹어야지. 쓸데없이 오밤중에 새벽에 min heap을 구현하겠답시고 열심히 구현을 하다가 구현에서 이상한것도 아니고 쓸데없는것에서 이상한 것을 발견하였다. 무한대를 $2^{31}$ 로 정의하고 싶어서, 다음과 같이 define을 했었다. #define INF 1

정수 범위 무한대 입력 방법

코테를 좀 풀다 보면 항상 ㅎㅇㅎㅇ 오늘도 또 왔슈 하고 나오는 조건들이 있다. 그 중 하나가 바로 int 범위 한정으로 숫자가 들어온다는 것이다. 가령, 문제에서 어떤 수 x가 들어온다고 하면서 x는 $-2^{31}$보다 크거나 같고 $2^{31}$보다 작다 라는 말이 붙을 때가 있는데, 이걸 말하는 것이다. 사실 그냥 이럴 경우 그래 input 받는 변수를 int로 해도 되겠구나 라고 int 타입 변수 선언하고 끝나면 된다. 그런데, 오늘은 max heap을 구현하다가 진짜로 INF를 숫자로 선언할 일이 있어서 약간 띠용했다. $-2^{31}$이나 $2^{31}$을 어떻게 선언해야 할까? 원시적인 방법부터 스마트해보이는 방법 순으로 살펴보자. 목차는 다음과 같다. 암기빵 먹기 조금 쌈빡한 암기빵 먹기..

[Algorithm] 점화식을 풀기 위한 방법들

알고리즘의 수행 시간을 분석하다 보면, 수 많은 점화식들이 쏟아지게 된다. 이를 풀기 위한 방법은 크게 3가지로 나눌 수 있다. 치환법 재귀 트리 방법 마스터 방법 이 포스트에서는 위의 세 가지를 가볍게 핵심만 훑고 지나가 보도록 하자. 추후 시간이 생긴다면 과연 언제 적절한 예시도 추가하도록 하겠다. 치환법 개념 점화식을 풀기 위한 치환법은 다음의 두 단계를 거친다. 해의 모양을 추측한다. 상수들의 값을 알아내기 위해 수학적 귀납법을 사용하고, 그 해가 제대로 동작함을 보인다. 단계 2에서 수학적 귀납법을 사용할 때, 더 작은 문제에 대하여 단계 1에서 추측한 해로 치환한다. 그렇기 때문에 이 방법의 이름이 치환법인 것이다. 재귀 트리 방법 개념 재귀 트리(recursion tree) 방법은 각 노드가..

[Algorithm] Merge Sort (병합 정렬)

Merge sort의 특징은 다음과 같다. 외부 정렬 방법이다. 분할 정복을 이용한다. Pseudo Code MERGE 결합 단계에서 정렬된 두 부분 수열을 병합하는 프로시저이다. MERGE(A, p, q, r) n1 = q - p + 1 n2 = r - q create L[1, ..., n1 + 1], R[1, ..., n2 + 1] for i = 1 to n1 L[i] = A[p + i - 1] for j = 1 to n2 R[j] = A[q + j] L[n1 + 1] = INF R[n2 + 1] = INF i = 1 j = 1 for k = p to r if L[i]

반응형