| O(n) 정렬 비교 정렬의 하한은 O(nlogn)이지만 입력된 자료의 원소가 제한적인 성질을 만족하는 경우 O(n) 정렬이 가능하다. 대표적인 O(n) 정렬의 알고리즘으로는 Counting Sort와 Radix Sort가 있다. | Counting Sort 일반적으로 정수 또는 문자를 정렬하는 경우 많이 사용되는 방법으로, 원소의 범위가 제한적일 때 원소의 개수를 세어 정렬하는 방법이다. 개수를 셀 배열과 정렬된 결과가 저장될 배열이 추가로 필요하다. 다양한 구현 방법이 있지만, Radix Sort와 연관된 버전으로 알아보자. 기본 구현 방법은 아래와 같다. 1. 각 원소의 개수를 저장할 count 배열을 준비한다. 2. 정렬한 배열에 대하여 각 원소의 개수를 세어 count 배열에 저장한다. int..
| 가상 함수 객체 지향 프로그래밍에서 가상 함수(virtual function 또는 virtual method)는 상속하는 클래스 내에서 같은 시그니처 함수로 오버 라이딩될 수 있는 함수 또는 메서드이다. 가상 함수에 관련된 내용은 아래 링크를 참조한다. https://coding-factory.tistory.com/699 | 가상 함수는 'vtable' 혹은 가상 테이블(virtual table)에 의존한다. 어떤 클래스의 함수가 virtual로 선언되어 있으면, 해당 클래스의 가상 함수 주소를 보관하는 vtable이 만들어진다. 컴파일러는 또한 해당 클래스의 vtable을 가리키는 vptr이라는 숨겨진 변수(hidden variable)를 해당 클래스에 추가한다. 하위 클래스가 상위 클래스의 가상 ..
| Hash Table 해시 테이블의 값(value)은 키(key)에 대한 해시 함수를 호출하여 저장한다. 값은 정렬된 순서로 보관되지 않는다. 삽입 및 탐색 연산은 분할상환적으로 O(1) 시간에 수행된다. (충돌이 적다는 가정하에) 잠재적 충돌을 고려하여 구현해야 한다. 보통은 충돌되는 값을 서로 연결하여(chaining)하여 이 문제를 해결한다. 즉, 특정 키에 대응되는 인덱스 위치에 모든 값을 연결 리스트로 묶는다. | STL map 키를 기준으로 만든 이진 탐색 트리에 키(key) / 값(value) 쌍을 보관한다. 충돌을 처리할 필요가 없고 트리의 균형이 유지되므로 삽입 및 탐색 시간은 O(logN)이 보장된다. key를 기준으로 정렬된 상태로 저장한다. 물론, 정렬하지 않은 상태로 저장하는 u..
| Question If a canoe can hold 2 kids and a max weight of 150 lbs, write a function that returns the minimum number of canoes needed, given a list of kids and their weights. 번역 : 하나의 카누에는 2명의 아이를 탑승시킬 수 있고, 카누의 최대하중은 150 lbs이다. 아이들의 무게를 나타내는 list가 주어질 때 필요한 카누의 수가 최소가 되는 함수를 작성하라. | Solution 문제를 풀 때 고려한 사항 아이들이 0명일 때 알고리즘이 정상 동작해야 한다. 아이들의 무게는 lsb단위로 주어진다고 가정한다. 아이들이 홀 수 일 때와 짝수일 때 모두 함수가 정상 동작해..
본 포스팅 시리즈에서는 모든 프로그래머들이 반드시 알아야 할 가장 기본적인 자료구조를 다룰 예정이다. 앞으로 다룰 내용은 프로그래머에게 기본 소양이며, 본인 스스로 직접 구현할 수 있어야 한다. | 일곱 번째 순서는 Hash Table이다. hash table은 각 data값이 key를 가지고 있는 자료구조이다. 우리가 특정 키로 특정 자물쇠를 바로 여는 것과 비슷한 자료구조이다. 키만 가지고 있다면 별도의 탐색과정 없이 효율적으로 데이터를 찾을 수 있고 이는 데이터의 크기에 관계없이 삽입 및 검색에 매우 효율적이다. 사실 배열도 일종의 hash라고 볼 수 있다. 각 인덱스에 대칭되는 값들을 배열이 가지고 있다. 그렇다면 배열이 있는데 우리는 왜 별도의 hash라는 것을 사용할까? 일반적으로 배열에서 사..
본 포스팅 시리즈에서는 모든 프로그래머들이 반드시 알아야 할 가장 기본적인 자료구조를 다룰 예정이다. 앞으로 다룰 내용은 프로그래머에게 기본 소양이며, 본인 스스로 직접 구현할 수 있어야 한다. | 여섯 번째 순서는 힙이다. heap이란 완전 이진트리의 일종으로 부모 노드와 자식 노드 간에 항상 대소 관계가 성립하는 자료구조이다. 부모의 노드가 자식 노드보다 크다면 Max Heap, 작다면 Min Heap이라고 한다. 이때 부모 노드와 자식 노드 간에 관계만 존재할 뿐 형제 노드 사이에는 아무런 관계가 없다. 위에서 말한 대소관계 이외에도 따로 우선순위를 위한 정의가 가능하며, 그러한 자료구조를 우선순위 큐라고도 한다. 힙은 보통 힙정렬 알고리즘, 우선순위 큐의 구현 등에 사용된다. 항상 최솟값 혹은 최..
본 포스팅 시리즈에서는 모든 프로그래머들이 반드시 알아야 할 가장 기본적인 자료구조를 다룰 예정이다. 앞으로 다룰 내용은 프로그래머에게 기본 소양이며, 본인 스스로 직접 구현할 수 있어야 한다. | 다섯 번째 순서는 트리이다. 트리는 계층적으로 구성되어 있고 서로 연결되어있는 데이터에 적합한 계층적 자료구조이다. 이 구조는 링크드 리스트 와는 다른 자료구조이지만, 링크된 요소끼리는 선형 순서로 링크드 리스트라고도 볼 수 있다. 트리는 오래전부터 다양한 형태로 계속 연구되어 발전되어 왔고, 활용되었으며 또 특정 상황 및 애플리케이션에 맞는 제약사항을 가지게 되었다. 트리의 형태로는 대부분이 알고 있는 이진 탐색 트리부터 B 트리, 레드 블랙 트리, AVL 트리 등이 있다. 이진 탐색 트리는 말 그대로 데이..

내돈내산 솔직리뷰 용산 킵햅 kiphap 리뷰 휴무 : 월요일 영업시간 : 매일 12:00 ~ 8:00 주차 : 골목에 있는 가게인데, 주차공간은 없거나 협소해보인다 전화번호 : 070-8648-0900 재방문 의사 - 상당히 맛있는 빵집이지만, 가게로부터 너무 멀리 살아 재 방문은 안 할 것 같다. 후기 좌석이 협소하다. 8 ~ 10좌석 정도 에그타르트는 빨리 품절된다. 인스타그램으로 미리 예약 가능하다. 에끌레어는 주문 시 크림을 바로 채워주어 맛있다. 접근성이 안 좋다. 베이커리 하시는데 빵모자를 안쓰시는건 좀 마이너스다.
- Total
- Today
- Yesterday
- 리트코드
- 러스트 기초
- Problem Solving
- LeetCode
- algorithm
- rust
- 솔직후기
- 러스트 입문
- 코딩인터뷰
- 알고리즘
- interview question
- DP
- 트리
- coding interview
- C++
- 기술면접
- 인터뷰
- 속초 맛집
- 속초
- 반드시 알아야 할 자료구조
- 러스트
- Interview
- 맛집
- Tree
- ProblemSolving
- 러스트 배우기
- Medium
- 자료구조
- PS
- 내돈내산
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |