2023/03 3

정렬

1. 선택 정렬 시간복잡도: O(n^2) 제자리 정렬 알고리즘 중 하나 0번째에 올 원소, 1번째에 올 원소... 이렇게 선택해 가져오는 정렬 전체중에서 가장 "작은 것" 을 계속 반복해서 비교해야 함 1. 최소값을 찾는다 2. 그 값을 맨 앞에 위치한 값과 교체한다 3. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체 '다음'에 있는 원소들 중 '가장 작은 거' 작은 순서대로 바뀐다. 비교횟수: n-1, n-2, n-3 ... 2, 1번 n번이n/2번 있는 것 n * n/2 = 1/2n^2 -> 시간복잡도가 O(n^2) -이중 선택 정렬: 한 번의 탐색에서 최솟값과 최댓값을 같이 찾는 방법. 탐색 횟수가 절반으로 줄어듬 2. 삽입 정렬 시간복잡도: O(n^2) 정렬되어 있는 부분에 새로운 원소를..

[2023] 스택/큐

1. 스택(Stack) LIFO(Last in first out) 후입선출 메소드 -[삭제 연산] pop : 맨 위의 원소 제거 -[삽입 연산] push : 맨 위에 원소 하나 추가 특징 -삽입과 제거가 맨 위(Top)에서만 일어남[삽입/삭제의 시간 복잡도 Θ(1)] 장점 -배열처럼 원소를 삭제하거나 이동했을 때 나머지 원소들이 움직일 필요가 없다. -데이터를 추가/삭제하는 시간이 짧다. -맨 위의 원소만 접근 가능 사용 사례 -재귀 알고리즘 : 데이터를 스택에 쌓아두고 재귀가 끝나고 빠져나올 때 순서대로 데이터를 꺼낸다. -후위 표기법 계산 2. 큐(Queue) FIFO(First in first out) 선입선출 메소드 -[삭제 연산] dnQueue(디큐): 맨 앞의 원소 제거 -[삽입 연산] enQ..

2022 스터디 2023.03.13

넘파이 스터디 20230308

넘파이 배열 배열(array) 리스트(list)의 차이 1. 모든 원소가 같은 자료형이어야 한다. (배열 객체 객체는 C언어의 배열처럼 연속적인 메모리 배치를 가지기 때문에 ) (원소에 대한 접근과 반복문 실행이 빨라진다.) 2. 원소의 갯수를 바꿀 수 없다. 배열을 import 해주는 게 넘파이 NumPy 백터화 연산을 지원 배열 객체는 배열의 각 원소에 대한 반복 연산을 하나의 명령어로 처리하는 벡터화 연산 리스트 객체에 곱하면 크기가 정수배 만큼 증가 x = np.array(data) x # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 2 * x # array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18]) array 객체 L = [0, 1, 2, 3, 4..

2022 스터디 2023.03.08