본문 바로가기

알고리즘

(4)
[알고리즘] 반복법, 재귀법 개념 이해 프로그래밍을 배우면 거의 초반부에 반복법을 배우게 됩니다. 루프를 반복하다가 특정 종료 조건을 만나면 멈추는 반복법은 개념을 이해하기가 그리 어렵지 않습니다. 그 후 프로그래밍을 계속 배우다 보면 재귀법을 만나게 됩니다. 보통 반복법과 재귀법이 같이 나오면서 둘을 비교하면서 설명하기도 하고 같은 프로그램을 반복법과 재귀법으로 2개를 만들어보라고도 합니다. 그런데 저의 경우에는 반복법의 코드는 원형 회귀를 하는 이미지가 떠오르며 쉽게 이해가 되었는 데 재귀법의 코드를 봤을 때에는 직감적으로 이미지가 떠오르지 않았습니다. 그래서 한동안은 제대로 이해를 하지 못하고 그냥 외워서 사용했습니다. 그러나 재귀법 예제들을 계속 보다보니 특정한 이미지가 떠오르게 되었습니다. 그래서 재귀법을 이해하는데 어려움을 느끼는 ..
[알고리즘] 정렬 난이도순 정렬 1.선택 정렬 O(n^2): 선형 탐색 반복 선형 탐색으로 최소값을 찾고 첫번째 위치에 놓으면 첫번째 가장 작은 요소가 확정된다. 반복. 2.삽입 정렬 O(n^2)/O(n): 2번째 요소부터 자신보다 작은 요소가 나올때까지 왼쪽으로 옮긴다. 반복. / 최대한 정렬되있을 때 빠르다 3.버블 정렬 O(n^2): 붙어 있는 2개의 거품 방울 끝에서부터 2개 요소를 비교해가며 다 작은 쪽을 왼쪽에 놓고 처음까지 오면 첫번째 가장 작은 요소가 확정된다. 반복. 4.병합 정렬 O(nlogn):1개가 될때까지 반으로 쪼개고 다시 합치면서 정렬한다. 5.퀵 정렬 O(nlogn)/O(n^2): 기준 요소를 구하고 양쪽 끝에서부터 기준 요소보다 크거나 작은 요소를 찾으면 멈추고 찾은 요소 2개의 위치를 바꾼..
[알고리즘] 자료구조 (파이썬) 스택 stack = [] stack.append(a) stack.pop() stack[-1] 큐 queue = [] queue.append(a) queue.pop(0) queue[0] 힙 - 최소 힙 import heapq heap = [] heapq.heappush(heap, 1) heap = [1,2,3] heapq.heapify(heap) heapq.heappop(heap) - 최대 힙 heapq.heappush(heap, (-a, a)) : 튜플의 첫번째 원소, a의 역인 -a를 기준으로 정렬하여 최소 힙을 최대 힙처럼 사용한다 heapq.heappop(heap)[1] : (-a, a)에서 a를 출력 우선순위 큐 from queue import PriorityQueue pq = PriorityQu..
[알고리즘] 파이썬 메모 입력 받아들이기 a,b,c = map(int, input.split()) nums = list(map(int, input.split()) 입력 개수 = int(input()) for _ in range(N): 각 입력 = int(input()) ~ 무한, ∞: float("inf") -무한, -∞: float("-inf") ​ array: [(1,2), (3,4), (5,6)] 일 때 array.sort(key=lambda x: x[0]) array.sort(key=lambda x: x[1])