코딩 테스트를 위한 파이썬 문법 - 주요 라이브러리의 문법과 유의점

Alex·2022년 2월 23일
0

이코테 with 파이썬

목록 보기
6/33

표준라이브러리란?

-> 특정한 프로그래밍 언어에서 자주 사용되는 표준 소스코드를 미리 구현해 놓은 라이브러리를 의미.

파이썬 표준 라이브러리 공식 문서

코딩 테스트를 준비하면서 반드시 알아야 하는 라이브러리는 6가지 정도.

1. 내장함수

  • print(), input()과 같은 기본 입출력 기능부터 sorted()와 같은 정렬 기능을 포함하고 있는 기본 내장 라이브러리. 파이썬 프로그램을 작성할 때 없어서는 안 되는 필수적인 기능을 포함하고 있다.
  • 별도의 import 명령어 없이 바로 사용

1) sum 함수

  • 리스트와 같은 iterable객체(반복 가능한, 리스트, 사전 자료형, 튜플 자료형 등)가 입력으로 주어졌을 때, 모든 원소의 합을 반환.
result = sum([1, 2, 3, 4, 5])
print(result)

2) min 함수

  • 파라미터가 2개 이상 들어왔을 때 가장 작은 값을 반환.

3) max 함수

  • 파라미터가 2개 이상 들어왔을 때 가장 큰 값을 반환.

4) eval 함수

  • 수학 수식이 문자열 형태로 들어오면 해당 수식을 계산한 결과를 반환.
result = eval("(3 + 5) * 7")
print(result)
-> 56

5) sorted 함수

  • iterable 객체가 들어왔을 때, 정렬된 결과를 반환. key 속성으로 정렬 기준을 명시할 수 있으며, reverse 속성으로 정렬된 결과 리스트를 뒤집을지의 여부를 설정할 수 있음.

2. itertools

  • 파이썬에서 반복되는 형태의 데이터를 처리하는 기능을 제공하는 라이브러리. 순열과 조합 라이브러리를 제공
  • 코딩테스트에서 가장 유용하게 사용할만한 클래스는 permutations, combinations

1) permutations

  • 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)를 제시
  • 클래스이므로 객체 초기화 이후엔 리스트 자료형으로 변환하여 사용
from itertools import permutations
data = ['A', 'B', 'C']
result = list(permutations(data, 2) # 모든 순열 구하기
print(result)

2) product

  • permutations와 같이 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)를 계산. 다만 원소를 중복하여 뽑는다.
  • product객체를 초기화할 때는 뽑고자 하는 데이터의 수를 repeat속성값으로 넣는다.
  • 클래스이므로 객체 초기화 이후에는 리스트 자료형으로 변환하여 사용
from itertools import product
data = ['A', 'B', 'C'] # 데이터 준비
result = list(product(data, repeat=2)) # 2개를 뽑는 모든 순열 구하기(중복 허용)
print(result)

3) combinations_with_replacement

  • combinations와 같이 리스트와 같은 iterable객체에서 r개의 데이터를 뽑아 순서를 고려하지 않고 나열하는 모든 경우(조합)을 구한다. 다만 원소를 중복해서 뽑는다.
  • 클래스이므로 객체 초기화 이후에는 리스트 자료형으로 변환하여 사용해야 함.
from itertools import combinations_with_replacement
data = ['A', 'B', 'C'] #데이터 준비
result = list(combinations_with_replacement(data, 2)) 
# 2개를 뽑는 모든 조합 구하기(중복 허용)
print(result)

3. heapq

  • 힙(Heap) 기능을 제공하는 라이브러리. 우선순위 큐 기능을 구현하기 위해 사용
  • 힙에 원소를 삽입할 때는 heapq.heappush()매서드를 이용하고, 힙에서 원소를 꺼내고자 할 때는 heapq.heappop()매서드를 사용.
import heapq
def heapsort(iterable):
	h=[]
    result=[]
    #모든 원소를 차례대로 힙에 삽입
    for value in iterable:
    	heapq.heappush(h, value)
    #힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
    for _ in range(len(h)):
    	result.append(heapq.heappop(h))
    return result
result = heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
print(result)
-> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

4. bisect

  • 이진 탐색(Binary Search) 기능을 제공하는 라이브러리

1) bisect_left(a, x)

  • 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 매서드

2) bisect_right(a, x)

  • 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 매서드
from bisect import bisect_left, bisect_right
a = [1, 2, 4, 4, 8]
x = 4
print(bisect_left(a, x))
print(bisect_right(a, x))
->
2
4

3) count_by_range(a, left_value, right_value)

  • 정렬된 리스트에서 값이 [left_value, right_value]에 속하는 데이터의 개수를 반환

5. collections

  • 덱(deque), 카운터(counter) 등의 유용한 자료구조를 포함하고 있는 라이브러리

1) deque

  • 리스트 자료형과 다르게 인덱싱, 슬라이싱 등의 기능은 사용할 수 없음. 다만, 연속적으로 나열된 데이터의 시작 부분이나 끝부분에 데이터를 삽입하거나 삭제할 때는 매우 효과적으로 사용될 수 있음.
  • 스택이나 큐의 기능을 모두 포함한다고 볼 수 있기에 스택 혹은 큐 자료구조의 대용으로 사용 가능.
  • 원소를 삽입할 때엔 append()를 사용, 원소를 삭제할 땐 popleft()를 사용
from collections import deque
data = deque([2, 3, 4])
data.appendleft(1)
data.append(5)
print(data)
print(list(data)) #리스트 자료형으로 변환
->
deque([1, 2, 3, 4, 5])
[1, 2, 3, 4, 5]

2) counter

  • 등장 횟수를 세는 기능 제공
  • 리스트와 같은 iterable객체가 주어졌을 때, 해당 객체 내부의 원소가 몇 번씩 등장했는지를 알려준다.

6. math

  • 필수적인 수학적 기능을 제공하는 라이브러리. 팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 함수부터 파이(pi)와 같은 상수를 포함하고 있다.

1) factorial(x)

  • x!값을 반환

2) sqrt(x)

  • x의 제곱근을 반환

3) gcd(a, b)

  • a와 b의 최대 공약수를 반환.

4) math.pi, math.e

  • 파이 출력, 자연상수 e 출력
profile
With Data or Without Data?

0개의 댓글

관련 채용 정보