-
[python] 코딩테스트를 위한 python 문법 정리(2)코딩테스트 2023. 4. 27. 13:42
itertools
: 파이썬에서 반복되는 데이터를 처리하는 기능을 포함하고 있는 라이브러리
- permutations : r개의 데이터를 뽑아 일렬로 나열 (순열)
- combinations : r개의 데이터를 뽑아 순서를 고려하지 않고 나열 (조합)
- product : r개의 데이터를 뽑아 중복을 허용하여 일렬로 나열
- combinations_with_replacement : r개의 데이터를 뽑아 중복을 허용하여 순서를 고려하지 않고 일렬로 나열
정리해보면
순서 중복 permutations O X combinations X X product O O combinations_with_replacement X O 예시도 보자
1.permutation
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')]
2. combination
from itertools import combinations data = ['A','B','C'] result = list(combinations(data,2)) print(result) # [('A', 'B'), ('A', 'C'), ('B', 'C')]
3. product
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')]
4. combinations_with_replacement
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')]
bisect
: 이진 탐색 쉽게 구현
- bisect_left(a,x) : 정렬 유지 하면서 리스트 a에 x를 삽입 할 가장 왼쪽 인덱스 찾기
- bisect_right(a,x) : 정렬 유지 하면서 리스트 a에 x를 삽입 할 가장 오른쪽 인덱스 찾기
*O(log n)
특정 범위에 있는 값의 갯수를 찾는데 매우 용이하다.
right_value - left_value 하면 갯수가 나온다
from bisect import bisect_right, bisect_left def count_by_range (a,left_value,right_value): right_index = bisect_right(a,right_value) left_index = bisect_left(a,left_value) return right_index - left_index a = [1,2,3,3,3,3,4,4,8,9] #값이 4인 데이터 개수 출력 print(count_by_range(a,4,4)) #2 #-1,3 범위에 있는 데이터 개수 출력 print(count_by_range(a,-1,3)) #6
deque
from collections import deque data = deque([2,3,4]) data.appendleft(1) data.append(6) print(data) #deque([1, 2, 3, 4, 6])
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}
math
1. factorial
import math print(math.factorial(5)) #120
2. 제곱근 sqrt
import math print(math.sqrt(16)) #4.0
3. 최대공약수
import math print(math.gcd(21,14)) #7
4. 최소공배수 + 파이썬 3.9버전부터 가능
import math print(math.lcm(6,8)) #24
2023.04.27 - [코딩테스트] - [python] 코딩테스트를 위한 python 문법 정리(1)
[python] 코딩테스트를 위한 python 문법 정리(1)
e를 이용한 지수 표현 a=1e9 print(a) #1000000000 b=75.25e1 print(b) #752.5 c=3954e-3 print(c) #3.954 실수 계산시 round() round(인자,반올림하고자 하는 위치-1) a=0.3+0.6 print(round(a,2)) #0.9 리스트 컴프리헨션 #2차원 배열
yellog03.tistory.com
'코딩테스트' 카테고리의 다른 글
[Java] 프로그래머스_삼각달팽이 (0) 2023.06.30 [python] DFS / BFS (0) 2023.04.28 [python] 이진탐색 (0) 2023.04.27 [Python] 정렬 알고리즘 - 선택, 삽입, 퀵, 계수 (0) 2023.04.27 [python] 코딩테스트를 위한 python 문법 정리(1) (0) 2023.04.27