튜플 - 다익스트라 최단경로 알골때 우선순위 큐 이용하는데, 우선순위 큐에 들어가는 데이터를 튜플로 구성
, 그래프 알고리즘 구현할때 자주 사용
리스트 - C++의 STL vector와 유사함.
빈리스트 선언 : arr = list() 혹은 arr=[] (arr는 변수명이라 가정)
인덱싱, 슬라이싱
★컴프리헨션 : 리스트 초기화방법 array = [i for i in range(20) if i%2==1]
특히 2차원 배열 초기화할때 유용함
arr = [[0]*m for _ in range(n)]
★★ 특정 크기의 2차원 리스트 초기화시엔 반드시 리스트 컴프리헨션 이용해야함
기타메서드
메서드 | 시간복잡도 |
append() | O(1) |
sort() | O(nlogn) |
reverse() | O(N) |
insert() | O(N) |
count() | O(N) |
remove() | O(N) |
insert()함수를 사용하면 시간복잡도는 O(N), append()함수가 O(1)에 수행되는데에 반해 너무 느리다
★insert함수 남발하면 시간초과 날수있음
remove()또한 삭제후 리스트의 원소위치를 조정해야하므로 O(N)만큼 소요
★ 전형적이 코테 문제풀때 input()이용하지만,
input개수가 많은 경우에는 동작속도가 느려서 시간초과 날 수 있기때문에
==> sys 라이브러리 이용.
sys.stdin.readline().rstrip()
파이썬에서 지원하는 표준라이브러리
내장함수 | 기본 입출력기능(input(), print()) , sorted()기능 등 제공 라이브러리 |
itertools | iterate한 데이터 처리할때 쓸 라이브러리. 순열과 조합 라이브러리 제공 |
heapq | 힙기능 제공하는 라이브러리, 우선순위 큐 기능 구현위해 사용할거임 |
bisect | 이진탐색 기능 제공하는 라이브러리 |
collections | 덱,카운터 등의 자료구조 포함 |
내장함수
sorted()함수는 iterable한 객체 들어왔을때, 정렬된 결과 반환
key속성으로 reverse를 활용해 정렬된 리스트 뒤집을지 여부 결정할 수 있음
sorted([8,2,4], reverse=True) #내림차순 정렬
itertools
가장 유용하게 쓸만한 클래스는 permutations, combinations
- permutations
리스트같은 iterable한 객체에서 r개의 데이터 뽑아 일렬로 나열하는 모든경우 즉, 순열에 사용
- combinations
순서고려하지 않고 나열하는 모든 경우(조합)
from itertools import permutations
arr = ['A','B','C']
answer = list(permutations(data,3)) #모든 순열 구하기
print(result)
- 보통 파이썬에서는 deque 사용해 큐 구현
'알고리즘 > 이것이 코딩테스트다 with python' 카테고리의 다른 글
[이코테] 개미전사 (with Python / DP) (0) | 2023.08.31 |
---|---|
[이코테] 게임개발 (with Python / 구현, 시뮬레이션) (0) | 2023.08.26 |
[이코테] 1이 될때까지 (with Python / 그리디) (0) | 2023.08.25 |