본문 바로가기

분류 전체보기

(6)
TypeScript에서 __dirname, process.env, 테스트 파일에서 발생하는 "corresponding file is not included in tsconfig.json" 오류 해결 방법 TypeScript를 사용하다 보면 __dirname, process.env, 또는 테스트 파일에서 "corresponding file is not included in tsconfig.json"와 같은 오류를 마주할 수 있습니다. 이러한 문제는 TypeScript 설정(tsconfig.json)이 제대로 구성되지 않았을 때 발생합니다. 이번 글에서는 이러한 문제를 해결하는 방법을 설명하겠습니다.해결 방법tsconfig.json 파일에서 lib 옵션을 추가합니다.{ "compilerOptions": { "lib": ["es2021"], "types": ["node", "jest"] }}결론TypeScript에서 __dirname, process.env, 테스트 파일 관련 오류는 대부분 ts..
퀵 정렬(quick sort) 퀵 정렬 퀵 정렬은 피벗(pivot)값을 중심으로 그 값이 피벗 값보다 크면 오른쪽, 작으면 왼쪽으로 보내서 피벗 중심으로 정렬하는 방법이다. 시간 복잡도 퀵 정렬의 평균 시간 복잡도는 O(nlogn)입니다. 하지만 최악일 경우 시간복잡도는 O(n^2) 까지 나올 수 있습니다. 구현 방식 파이썬 코드 import random class QuickSort(object): def __init__(self, numbers): self.values = numbers self.count = len(self.values) def sort(self): self.quick_sort(0, self.count - 1) return self.values def quick_sort(self, left, right): i = ..
병합 정렬(merge sort) 병합 정렬 병합 정렬은 분할 정복 알고리즘 중 하나로, 리스트를 분할하여 정렬하고 정렬된 알고리즘을 다시 합치는 정렬방법이다. 안정적 정렬 방법으로 정렬되지 않은 상태에서 같은 키값을 가진 원소의 순서가 정렬 후에도 유지 가능 합니다. 시간복잡도 합병정렬의 Divide 단계에서 분할되는 깊이가 logN에 비례합니다. 각 깊이별로 Divide가 수행되어 합병해야되는 배열의 수는 많아지지만, 총 원소의 수는 똑같습니다. (N개) 따라서 각 깊이별로 수행되는 merge의 시간복잡도는 O(N)이 됩니다. 이것을 모든 깊이에 대해(logN개만큼) 수행하기 때문에 시간복잡도는 O(N * logN)이 됩니다. 구현 방식 병합 정렬을 여러 가지 구현 방식이 있습니다. 1. Top down 형식 : 배열을 큰 단위부터 ..
삽입 정렬(insertion sort) 삽입 정렬 삽입 정렬은 key값을 배열의 알맞는 위치로 삽입하여 정렬하는 방식입니다. 시간복잡도 - o(n^2) 계획세우기 1. 시작 index는 1부터 시작하여 앞 index들과 비교를한다. 2. key값이 앞 index들보다 크면 그대로 고정 3. key값이 작으면 array의 value값을 뒤로 보낸다. 4. 저장된 key값을 맞는 위치에 넣는다. 그림으로 이해하기 파이썬으로 구현 arr = [8, 5, 6, 2, 4] def insertion_sort(list): n = len(arr) for i in range(1, n): key_value = list[i] # key값 뒤값 index j = i -1 while j >= 0 and list[j] > key_value : list[j+1] = l..
선택 정렬(selection sort) 선택정렬 1. 정렬 되지 않은 list의 index부터 시작하여 정렬을 시작한다. 2. 반복문을 시작하여 최소값을 찾는다. 3. 교환 해서 정렬을 시작한다. 시간 복잡도 - O(n^2) 그림으로 보기 파이썬으로 풀어보기 arr = [9, 6, 7, 3, 5] def selection_sort(list): n = len(list) for i in range(n): min_idx = i for j in range(i+1, n): if list[j] < list[min_idx] : min_idx = j list[i], list[min_idx] = list[min_idx], list[i] return list answer = selection_sort(arr) print(answer) 정리 버블정렬과 마찬가지로..
버블 정렬(bubble sort) 버블 정렬 가장 기본적인 정렬입니다. 정렬 방식은 오른쪽에 있는 것과 비교하여 값이 작으면 교환 하는 방식으로 정렬을 합니다. 정렬은 맨 뒤부터 되는게 특징이기 때문에 이 점을 작 이용하셔서 코드를 작성해주셔야 합니다. BIG O = n^2이고 매우 오래 걸립니다. 그림으로 한번 보겠습니다. 파이썬 구현 list = [10, 5, 6, 8, 2, 1] def bub_sort(a): n = len(a) for i in range(0, n-1): for j in range(0, n-1-i): if a[j] > a[j+1]: a[j], a[j+1] = a[j+1], a[j] bub_sort(list) print(list) temp = a[j] a[j] = a[j+1] = a[j], a[j+1] = a[j+1]..