[이코테] 정렬 알고리즘 풀이
# 국영수 a = [(5, 1, 5), (3, 5, 5), (3, 1, 9), (3, 1, 1)] a.sort() print(a) n = int(input()) students = [] for _ in range(n): students.append(input().split()) students.sort(key = lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0])) # 안테나 n = int(input()) data = list(map(int, input().split())) data.sort() print(data[(n-1) // 2]) # 실패율 def solution(N, stages): answer = [] length = len(stages) for i i..
2022. 10. 27.
정렬 알고리즘 (시간복잡도 비교)
이진탐색 순차탐색 합병정렬, 퀵정렬, 힙정렬 버블정렬, 삽입정렬, 선택정렬 / 쉘정렬 O(logn) O(n) O(nlogn) O(n2) / O(n1.25) 분할과 정복 알고리즘 >> 문제의 입력을 2/n으로 분할하고, 이를 다시 합병하여 문제를 해결하는 방식 이진탐색 O(logn) >> 탐색범위의 중간부터 시작하여, 비교를 통해 절반의 숫자를 제거하는 방식으로, 문제가 2개로 분화되나, 그중 한개는 정렬할 필요가 없으며, 부분문제의 크기가 1/2로 감소하는 알고리즘 합병정렬 O(nlogn) >> 문제의 입력을 2개의 부분문제로 분할, 부분문제의 크기가 1/2로 감소, 분할 정복 후 합병하는 방식 문제가 a로 분할되고, 부분문제의 크기가 1/b로 감소하는 알고리즘 퀵정렬 O(nlogn) >> 기준 데이터를..
2022. 10. 27.