반응형
sum(), min(), max(), eval() - 합, 최대값, 최소값, 문자열을 식으로
# sum()
result = sum([1, 2, 3, 4, 5])
print(result) # 15
# min(), max()
min_result = min(7, 3, 5, 2)
max_result = max(7, 3, 5, 2)
print(min_result, max_result) # 2 7
# eval()
result = eval("(3+5)*7")
print(result) # 56
sum()은 합, min()과 max()는 최소, 최대값을 추출한다.
eval()은 문자열로 된 식(코드)을 계산한다.
sorted() - 정렬된 새로운 리스트 반환
# sorted()
result = sorted([9, 1, 8, 5, 4])
reverse_result = sorted([9, 1, 8, 5, 4], reverse=True)
print(result) # [1, 4, 5, 8, 9]
print(reverse_result) # [9, 8, 5, 4, 1]
sorted()는 리스트(또는 다른 자료형)를 정렬한다.
reverse 인자는 내림차순 여부를 결정한다. (없으면 오름차순)
리스트의 sort() 메서드와 다른 점은, sorted() 함수는 새로운 리스트를 생성한다는 것이다.
itertools permutaions(), combinations() - 순열, 조합
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')]
permutations(list, n)은 list에서 순서를 고려하여 n개를 추출한 경우의 수를 생성해준다.
from itertools import combinations
data = ['A', 'B', 'C']
result = list(combinations(data, 2))
print(result)
# [('A', 'B'), ('A', 'C'), ('B', 'C')]
combinations(list, n)은 list에서 순서를 고려하지 않고 n개를 추출한 경우의 수를 생성해준다.
중복 순열과 중복 조합을 나타내는 product(list, n)과 combinations_with_replacement(list, n) 함수도 존재한다.
Counter - 성분의 개수를 세어주는 클래스
from collections import Counter
counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(counter['blue']) # 3
print(counter['green']) # 1
print(dict(counter)) # 딕셔너리로 반환
# {'red': 2, 'blue': 3, 'green': 1}
Counter는 리스트에서 성분의 개수를 세어주는 클래스이다.
딕셔너리 형태로 각 성분의 개수를 반환할 수도 있다.
gcd() - 최대공약수
import math
# 최소공배수(LCM)을 구하는 함수
def lcm(a, b):
return a * b // math.gcd(a, b)
a = 21
b = 14
print(math.gcd(21, 14)) # 7 (최대공약수)
print(lcm(21, 14) # 42 (최소공배수)
gcd(a, b)는 a와 b의 최대공약수를 구하는 메서드이다.
최소공배수는 = (두 수의 곱) / (최대공약수) 공식에 따라 위와 같이 구할 수 있다.
(공식을 간단히 증명하자면,
A와 B의 최대공약수를 GCD라 하고, A = a x GCD, B = b x GCD 라 하자.
AB = a x b x (GCD)^2 이다.
이때, a, b, GCD는 모두 서로소 이므로, 위의 식에서 양변을 GCD로 나누면
AB/GCD = a x b x GCD 이고, 이 값은 최소공배수가 된다.)
반응형
'코딩테스트' 카테고리의 다른 글
백준 1012번 풀이 - 파이썬(Python) (그래프 탐색 / 깊이 우선 탐색(DFS)) (0) | 2022.09.02 |
---|---|
Python - n x m 영행렬(zero matrix) 선언하기 (0) | 2022.09.02 |
Python으로 스택(stack), 큐(queue) 자료구조 구현하기 (0) | 2022.09.01 |
백준 2839번 풀이 (파이썬) - DP / 그리디 알고리즘 (1) | 2022.08.28 |
Python 리스트 컴프리헨션(List Comprehension) (0) | 2022.08.24 |