이 포스팅은 이것이 취업을 위한 코딩테스트다 APPENDIX A
코딩테스트를 위한 파이썬 문법 파트
를 읽고 공부한 내용을 정리하는 용도로 작성되었습니다.
APPENDIX A에 수록된 문법 외에 개인적으로 공부한 내용을 추가해 두었으며, 예제는 직접 연습하며 작성하였기에 교재와 다를 수 있습니다.
bisect_left(a, x): 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메서드
bisect_right(a, x): 정렬된 순서를 유지하도록 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메서드
→ 두 메서드 모두 시간 복잡도 에 작동한다.
from bisect import bisect_left, bisect_right
a = [1, 2, 3, 3, 3, 5, 5, 7]
print(bisect_left(a, 3))
print(bisect_right(a, 3))
print(bisect_left(a, 5))
print(bisect_right(a, 5))
# result
2
5
5
7
a = [1, 2, 3, 3, 3, 5, 5, 7]
def count_by_range(a, left_value, right_value):
right_idx = bisect_right(a, right_value)
left_idx = bisect_left(a, left_value)
return right_idx - left_idx
print(count_by_range(a, 3, 3)) # 3의 개수
print(count_by_range(a, 2, 5)) # 2 이상 5 이하인 수
# result
3
6
deque: 양쪽 끝에서 빠르게 추가(append)와 삭제(pop)를 할 수 있는 리스트류 컨테이너
Counter: hashable object를 세는 데 사용하는 딕셔너리 서브 클래스, element는 dictionary key로 저장되고, 개수는 dictionary value로 저장된다.
name | description |
---|---|
pop() | 마지막 원소를 제거한 뒤 반환 |
popleft() | 첫 번째 원소를 제거한 뒤 반환 |
append(x) | deque 오른쪽에 x 삽입 |
appendleft(x) | deque 왼쪽에 x 삽입 |
clear() | deque의 모든 원소를 제거 |
copy() | deque의 shallow copy를 생성 |
count(x) | x와 같은 deque element의 수 계산 |
from collections import deque
a = deque([1, 2, 3, 3, 3, 5, 5, 7])
a.appendleft(9)
a.append(10)
print(list(a))
# result
[9, 1, 2, 3, 3, 3, 5, 5, 7, 10]
list | deque | |
---|---|---|
가장 앞쪽에 원소 추가 | ||
가장 뒤쪽에 원소 추가 | ||
가장 앞쪽에 있는 원소 제거 | ||
가장 뒤쪽에 있는 원소 제거 |
from collections import Counter
counter = Counter(['🍍', '🍎', '🍍', '🍇', '🍎', '🍎', '🍍', '🍎'])
print(counter)
print(counter['🍍'])
print(counter['🍎'])
print(counter['🍇'])
print(dict(counter))
# result
Counter({'🍎': 4, '🍍': 3, '🍇': 1})
3
4
1
{'🍍': 3, '🍎': 4, '🍇': 1}
import math
print(math.factorial(5))
# result: 120
import math
print(math.sqrt(5))
# result: 2.23606797749979
import math
print(math.gcd(5, 15))
# result: 5
드디어 코딩테스트를 위한 파이썬 문법 시리즈가 끝났어요! 👏👏👏
다음 포스팅에서는 학습한 문법을 바탕으로 codeup 기초 100제를 푼 뒤 새롭게 알게 된 점을 정리해서 공유드릴게요😃
코딩테스트 준비 시리즈가 조금이나마 도움이 되셨다면 💚 부탁드려요💞
Source
좋은 정보 감사합니다!! ㅎㅎ