내장함수
: 별도의 import명령어 없이 바로 사용할 수 있는 내장함수
예 ) input(), print(), sum() , min(), max(), eval(), sorted()
sum()
: iterable 객체가 입력으로 주어졌을 때, 모든 원소의 합을 반환한다
result = sum([1, 2, 3, 4, 5])
print(result) # 15
min() / max()
result = min(7, 3, 2, 5) #2
result2 = max(7, 3, 2, dsfewfwef) #7
eval()
:수학 수식이 문자열 형식으로 들어오면 해당 수식을 계산한 결과를 반환한다.
result = eval("(3 + 5) * 7") #56
sorted()
result = sorted([ 9, 1, 8, 5, 4]) #오름차순으로 정렬
result = sorted([ 9, 1, 8, 5, 4], reverse = True) #내림차순으로 정렬
※ key 속성으로 정렬 기준을 명시할 수 있으며, reverse 속성으로 정렬된 결과 리스트를 뒤집을지의 여부를 설정할 수 있다.
result = sorted([('홍길동', 35), ('이순신', 75), ('아무개', 50)] , key = lambda x : x[1] , reverse = True)
print(result)
#[('이순신', 75), ('아무개', 50), ('홍길동', 35)]
※리스트와 같은 iterable객체는 기본으로 sort()함수를 내장하고 있어서 sort()함수로 바로 정렬가능
data = [9,1,8,5,4]
data.sort()
print(data)
heapq
: 파이썬의 힙은 최소 힙으로 구성되어 있으므로 단순히 원소를 힙에 전부 넣었다가 빼는 것만으로도 시간복잡도 O(NlogN)에 오름차순 정렬이 완료된다. 보통 최소 힙 자료구조의 최상단 원소는 항상 '가장 작은' 원소
#최소 힙정렬
#힙정렬
import heapq
def heapsort(iterable):
h = []
result = []
#모든 원소를 차례대로 힙에 삽입
for value in iterable:
heapq.heappush(h, value)
#힙에 삽입된 모든 원소를 차레대로 꺼내어 담기
for i in range(len(h)):
result.append(heapq.heappop(h))
return result
result = heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
print(result)
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#최대 힙정렬
: 내림차순 힙 정렬 구현
: 힙에 원소를 삽입하기 전에 부호를 반대로 바꾸었다가, 힙에서 원소를 꺼낸 뒤에 부호를 바꾸면 된다.
#힙정렬
import heapq
def heapsort(iterable):
h = []
result = []
#모든 원소를 차례대로 힙에 삽입
for value in iterable:
heapq.heappush(h, -value)
#힙에 삽입된 모든 원소를 차레대로 꺼내어 담기
for i in range(len(h)):
result.append(-heapq.heappop(h))
return result
result = heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
print(result)
#[9, 8, 7, 6, 5, 4, 3, 2, 1]
Collections
-deque
: 큐 구현
deque는 시간 복잡도 모두 O(1)
#
popleft() : 첫번째 원소 삭제
pop() : 맨 뒤쪽에 원소 삭제
appendleft() : 맨처음에 삽입
append() : 맨 뒤쪽에 원소 삽입
from collections import deque
data = deque([2 ,3, 4])
data.appendleft(1)
data.append(5)
print(data) #deque([1,2,3,4,5])
print(list(data)) #[1,2,3,4,5]
-Counter
: 등장 횟수를 세는 기능을 제공
from collections import Counter
counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(counter['green']) #1
print(dict(counter))
#{ 'red' : 2, 'blue' : 3, 'green' : 1 }
'CS > Algorithm' 카테고리의 다른 글
[Python : 10214] Baseball (0) | 2022.02.03 |
---|---|
[Python : 11557] Yangjojang of The Year (0) | 2022.02.03 |
[Python] 함수 & 입출력 (0) | 2022.01.31 |
[백준:10828/JAVA] 스택 (0) | 2021.10.04 |
[백준 : 2751/JAVA] 수 정렬하기2 (0) | 2021.10.04 |