개인적으로 코딩테스트를 준비하면서 정규식 같은
어느 정도 숙지하고 있다면 도움이 될 만한 함수나 라이브러리들을 계속해서 정리해보려고 한다.
절댓값 구하기
abs(x)
알파벳 리스트 생성
from string import ascii_letters // 알파벳 소문자 대문자 모두 포함
import ascii_lowercase // 소문자
import ascii_lowercase // 대문자
람다 정렬
여러 기준을 두고 정렬을 해야 할 때 사용한다.
a.sort(key=lambda x: x[1] # a의 인덱스 1 기준으로 정렬
dict 람다 정렬
dict = {
2: 3,
1: 3,
3: 5,
6: 3,
5: 2
}
#1.
print(sorted(dict.keys(), key=lambda x: x))
-딕셔너리의 키값들을 매개변수 x에 넣어 x로 정렬하며
키값을 출력한다.
#결과값 : [1,2,3,5,6]
#2.
print(sorted(dict.values(), key=lambda x: x))
-딕셔너리의 value값들을 매개변수 x에 넣어 x로 정렬하며
value값을 출력한다다
#결과값 : [2,3,3,3,5]
#3.
print(sorted(dict, key=lambda x: dict[x]))
-딕셔너리의 키값들을 매개변수 x에 넣어 dict[x] 즉 dict의 value값으로 로 정렬하며
키값을 출력한다.
#결과값 : [5, 2, 1, 6, 3]
#4.
print(sorted(dict.items(), key=lambda x: x[0]))
-딕셔너리의 키,값 쌍들을 매개변수 x에 넣어 키값
정렬하며 키값을 출력한다.
#결과값 : [(1, 3), (2, 3), (3, 5), (5, 2), (6, 3)]
비트 연산
a ^ b // XOR
a | b // OR
a & b // AND
~a // NOT
리스트에서 최대 빈도 원소 구하기
Counter 함수에서 최대 빈도수 구하기
max(C, key = C.get)
dict 에서 최대 빈도 원소 구하기
max(dict, key = dict.get)
<br>
> Dict에서 key값만 출력하기, value값만 출력하기
```python
print(list(dict.keys()))
print(list(dict.values()))
2차원 리스트 회전
시계 90도 회전
list = [[1,2,3], [4,5,6], [7,8,9]]
new_list = list(map(list, zip(*list[::-1])))
# new_list = [[7,4,1],[8,5,2],[9,6,2]]
반시계 90도 회전
list = [[1,2,3], [4,5,6], [7,8,9]]
new_list = list(map(list, zip(*list)))[::-1]
# new_list = [[3,6,9],[2,5,8],[1,4,7]]
"중복", "겹치는" 키워드가 있을 시에
중복을 제거 할 수 있는
dict()와 set()을 고려해보자
진법 변환
10진수 -> N진법
import string
N, B = map(int, input().split())
tmp = string.digits + string.ascii_uppercase
def convert(N, B):
a, b = divmod(N, B)
if a == 0:
return tmp[b]
else:
return convert(a, B) + tmp[b]
N진법 -> 10진수
print(int(N, B))
입력 시간복잡도 줄이기
import sys
a = sys.stdin.readline.split()
큐
from collections import deque
a = deque() # 초기화 필요
* deque는 stack이나 list와 달리 index의 참조가 불가하다
popleft(), appendleft() 등 스택, 리스트와 달리 앞에서 삽입, 삭제가 가능하다
물론 pop(), apppend()로 뒤에서 삽입, 삭제 또한 가능하다.
리스트 요소만 출력
a = [1, 2, 3, 4]
print(a) # [1, 2, 3, 4]
print(*a) # 1, 2, 3, 4
deque 회전(rotate)
a = deque([1, 2, 3, 4])
a.rotate(1) # 시계 방향으로 rotation
a.rotate(-1) # 반시계 방향으로 rotation
Python에서 트리 구현하는법
# dict 사용
root_node, left_node, right_node = list(map(str, input().split()))
tree[root_node] = left_node, right_node
heapq
import heapq
# heap에 원소 삽입
h = []
h.heappush(h, num)
# heap에 원소 삭제
h.heappop(h) # 자동으로 최솟값 삭제
* heapq 라이브러리는 최소 힙만을 구현,
최대힙을 구현하려면 변환 필요