본문 바로가기
알고리즘 부셔버렷

파이썬 코딩 테스트 라이브러리

by Unagi_zoso 2023. 8. 13.
dp = [[0 for j in range(1005)] for i in range(1005)]

2차원 배열 만들기

 

== 내장함수

  • sum(): iterable 객체(List, DIct, Tuple 등)의 모든 원소의 합을 반환
  • min(): 파라미터가2개 이상 들어왔을 때 가장 작은 값 반환
  • max(): 가장 큰 값 반환
  • sorted(): iterable 객체가 들어왔을 때, 정렬된 결과를 반환, 기본 오른차순
    • 내림차순 sorted(data, reverse=True), List, Dict 정렬 sorted(data, key=lambda x : x["key"])키 지정 가능
    • 해당키의 값으로 정렬, List, Tuple 정렬 sorted(data, key=lambda x : x[1]) 1번 인덱스로 정렬

== itertools 함수

from itertools import permutations

data = ["A", "B", "C"]
list(permutations(data) : n개 데이터 뽑아 일렬로 나열하는 모든 경우(순열)를 계산
list(permutations(data, 3))

combinations(조합): iterable 객체에서 n 개의 데이터를 뽑아 순서 고려하지 않고 나열하는 모든 경우(조합)
list(combinations(data,3))

product(중복순열): 모든 경우(순열)를 계산 (중복허용)
list(product(data, repeat=3))

list(combinations_with_replacement(data, 3)) 중복조합

  • heapq
    힙 기능. 다익스트라 최단 경로, 우선순위 큐 기능 구현
def hep_sort_sc(iterable):
    h = []
    res = []

    for value in iterable:
        heapq.heappush(h, value)

    for i in range(len(h)):
    res.append(heapq.heppop(h))


    return res

== bisect: 파이썬에서 이진 탐색을 쉽게 구현할 수 있도록 bisect 라이브러리를 제공. "정렬된 배열"에서 특정한 원소를 찾아야할 때 매우 효과적으로 사용

  • bisect_left(a, x): 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메소드
  • bisect_right(a, x): 정렬되 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메소드 (오른쪽에서부터 인덱스 시작)

from bisect import bisect_left

== collections

  • deque: 파이썬에서 이거 사용해 큐 구현, 인덱싱, 슬라이싱 기능은 불가. 시작, 끝 부분 데이터 삽입 삭제 효과

popleft(): 첫 번째 원소 제거
pop(): 마지막 원소 제거
appendleft(x) : 첫 번째 인덱스에 원소 x를 삽입
append(x): akwlakr dlseprtmdp dnjsth ㅌ tkqdlq

q = deque([2, 3, 4])

Counter: iterable 객체 주어졌을 때, 객체 내부의 원소가 몇 번씩 등장했는지 카운트 결과를 Dict 형태로 반환

from collections import Counter

data = ["A", "A", "A", "z"]
counter = dict(Counter(data))
counter

== math: 자주 사용되는 수학적인 기능을 포함한 라이브러리

  • factorial(x): x!값을 반환
  • sqrt(x): x의 제곱근
  • gcd(a, b): a와 b의 최대공약수 반환)
  • pi, e 상수값

이 영상을 보고 정리하였습니다.

자료1

자료2

댓글