CodingTest/Python 문법

표준 라이브러리(순열, 조합)

seongduck 2022. 7. 4. 21:08
함수 기능
내장 함수 기본 입출력, 정렬함수 등을 제공
itertools 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공
ex) 순열, 조합
heapq 힙 자료구조를 제공
ex) 우선순위 큐
bisect 이진 탐색(Binary Search) 기능을 제공
collections 덱(deque), 카운터(Counter)등의 자료구조
math 필수적인 수학적인 기능 제공
ex) 팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수, 파이(PI)

 

#sum()
result = sum([1,2,3,4,5])

#min(), max()
result = min(7,3,5,2)
result = max(7,3,5,2)

#eval()
result = eval("(3+5)*7")

#sorted()
result = sorted([9,1,8,5,4])
result = sorted([9,1,8,5,4], reverse=True)
result = sorted(array, key=lambda x: x[1], reverse = True)​

순열과 조합

순열

  • 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것
    • {'A','B','C'}에서 3개를 선택하여 나열하는 경우 : 'ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA'
from itertools import permutations

data = ['A', 'B', 'C']

result = list(permutations(data,3))
print(result)
#실행 결과
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]

 

중복 순열

from itertools import product

data = ['A', 'B', 'C']

result = list(product(data, repeat=2))
print(result)
#실행 결과
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]

 

조합

  • 서로 다른 n개에서 순서에 상관없이 서로 다른 r개를 선택하는 것
    • {'A','B','C'}에서 순서를 고려하지 않고 두 개를 뽑는 경우: 'AB', 'BC', 'AC'
from itertools import combinations

data = ['A', 'B', 'C']

result = list(combinations(data,2))
print(result)
#실행 결과
[('A', 'B'), ('A', 'C'), ('B', 'C')]

 

중복 조합

from itertools import combinations_with_replacement

data = ['A', 'B', 'C']

result = list(combinations_with_replacement(data, 2))
print(result)
#실행 결과
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]

Counter

  • 등장 횟수를 세는 기능을 제공
  • 리스트와 같은 반복 가능한(iterable)객체가 주어졌을 때 내부의 원소가 몇 번씩 등장했는지 알려준다
  •  
from collections import Counter

counter = Counter(['red','blue','red','green','blue','blue'])

print(counter['blue'])
print(dict(counter))
#실행 결과
3
{'red': 2, 'blue': 3, 'green': 1}

최대 공약수와 최소 공배수

  • math 라이브러리의 gcd()함수를 이용한다.
import math

#최소 공배수(LCM)
def lcm(a,b):
    return a*b // math.gcd(a,b)
a = 21
b = 14

print(math.gcd(21,14)) #최대 공약수
print(lcm(21, 14)) #최소 공배수
#출력결과
7
42

'CodingTest > Python 문법' 카테고리의 다른 글

함수  (0) 2022.07.04
반복문  (0) 2022.07.04
조건문  (0) 2022.07.04
표준 입/출력  (0) 2022.07.04
자료형  (0) 2022.07.04