본문 바로가기

Study3

[python] 2108번 - 통계학 문제 파이썬 풀이 보통 통계값을 파이썬으로 구할 때에는 numpy 라이브러리를 사용했었다. 그러나 알고리즘 풀이에서 numpy 라이브러리를 사용할 수 없다고 해 사용하지 않고 통계값을 구해보았다. import sys input = sys.stdin.readline from collections import Counter n= int(input().rstrip()) l = [int(input().rstrip()) for _ in range(n)] avg = round(sum(l)/n) l.sort() middle = l[n//2] rang = l[-1] - l[0] c = Counter(l) result = c.most_common(2) if len(result) == 2 and result[0][1] =.. 2021. 9. 8.
[python] 18870번 - 좌표 압축 문제 문제 풀이 자신보다 작은 수의 개수를 출력하는 문제이다. 크기 순대로 정렬하면 자신의 인덱스 번호가 자신보다 앞에 있는 원소의 수가 된다. 이를 이용하여 문제를 풀면 될 것 같으나, 신경 써야 할 점이 두 가지가 있다. 중복된 숫자의 경우 그대로 인덱스를 출력하면 같은 중복 횟수만큼 인덱스가 커져 자신보다 작은 원소의 수가 아니게 된다. 따라서 중복된 원소 처리를 신경 써야 한다. 리스트를 정렬 시 기존 리스트의 순서를 보존해야 출력 시 알맞게 출력할 수 있다. 1번의 경우 중복이 허용되지 않는 자료형인 집합 자료형을 이용하여 중복을 제거하였고, 2번의 경우 sorted를 이용하여 기존 리스트는 보존하고 정렬하여 새로운 변수에 저장하였다. import sys input = sys.stdin.read.. 2021. 9. 3.
[python구현] 정렬 알고리즘 - 선택, 삽입, 버블, 병합, 퀵 정렬 정렬 선택 정렬 선택 정렬 알고리즘 주어진 리스트 중에 최솟값을 찾는다. 찾은 값을 맨 앞에 위치한 값과 교체한다. 정렬된 앞부분을 제외한 리스트를 같은 방법으로 교체한다. 선택 정렬 파이썬 구현 def selectionSort(x) : length = len(x) for i in range(length-1) : minIndex = i for j in range(i+1,length) : if x[minIndex] >x[j] : minIndex = j x[i], x[minIndex] = x[minIndex], x[i] return x 선택 정렬 시간 복잡도 모든 인덱스 접근 루프문(i for문) : O(n) 최솟값 찾기 루프문 (j for문) : O(n) 총 O(n^2) 버블 정렬 버블 정렬 알고리즘 인접.. 2021. 8. 30.