[Sort] 데이터 정렬에 대한 정리
arr = [35,33,42,10,14,19,27,44,26] def quick_sort(arr,start,end): if start >= end: # 원소가 1개인 경우 종료 return pivot = start # 피벗은 첫번째 원소 left = start + 1 right = end while left right: # 엇갈렸다면 작은 데이터와 피벗 교체 arr[right], arr[pivot] = arr[pivot], arr[right] else: # 엇갈리지 않았다면 작은 데이터와 큰 데이터를 교체 arr[left], arr[right] = arr[right], arr[left] # 분할 이후 왼쪽 부분과 오른쪽 부분에서 각각 정렬 하기 quick_sort(arr, start, right - 1)..
2023. 3. 18.
[알고리즘] 최대점수구하기 (DFS-재귀)
목적: DFS 알고리즘의 재귀적 특성을 이해하기 위해서 문제 설명(요약): N개의 문제에 대한 각 점수와 각 문제를 풀기 위한 시간이 주어졌을 때, 정해진 M시간 내 에서의 최대 점수를 찾는문제 해결전략: 노드를 탐색하며(L++) 주어진 입력(점수,시간)을 쓴다 안쓴다 (sum++ or sum, time ++ or time) -> 재귀 함수로 구현 재귀함수에 대한 이해: arr = [[점수,시간],[점수,시간],,,,,,[점수,시간]] DFS(L+1,sum+arr[L][0],time+arr[L][1]) # 노드를 사용한다 1번 DFS(L+1,sum,time) # 노드를 사용하지 않는다 2번 1번 함수를 호출 했을 때 -> 만약에 시간이 초과되면 return 후 돌아와서 2번함수 호출 (stac..
2023. 3. 18.