[코딩 테스트] 파이썬에서 자주 쓰이는 함수, 라이브러리들 정리

DreamJJW·2023년 3월 19일
1

공부 노트

목록 보기
1/18

개인적으로 코딩테스트를 준비하면서 정규식 같은
어느 정도 숙지하고 있다면 도움이 될 만한 함수나 라이브러리들을 계속해서 정리해보려고 한다.



절댓값 구하기

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 라이브러리는 최소 힙만을 구현,
최대힙을 구현하려면 변환 필요



profile
간절한 사람

0개의 댓글