Python 15

(Python) bisect

bisect 파이썬에서 이진 탐색을 구현할 때 주로 사용되는 라이브러리이다. 정렬된 배열에서 특정한 원소를 찾아야할 때 매우 효과적이다. bisect_left(), bisect_right() 함수가 가장 중요하게 사용되며, 시간 복잡도는 O(logN)으로 동작한다. bisect_left(a, x) : 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메소드 bisect_right(a, x) : 정렬된 순서를 유지하도록 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메소드 from bisect import bisect_left, bisect_right a = [1, 2, 4, 4, 7, 8] x = 4 print(bisect_left(a, x)) print(bi..

Python 2024.01.29

(Python) heapq

heapq Python에서는 힙(heap) 기능을 위해 heapq 라이브러리를 제공한다. heapq는 다익스트라 최단 경로 알고리즘 등 다양한 알고리즘에서 우선순위 큐 기능을 구현하고자 할 때 사용한다. heapq 외에도 PriorityQueue 라이브러리를 사용할 수 있지만, 코딩 테스트 환경에서는 보통 heapq가 더 빠르게 동작하므로 heapq를 이용하도록 하자. Python의 힙(heap)은 최소 힙(min heap)으로 구성되어 있으므로 단순히 원소를 힙에 전부 넣었다가 빼는 것만으로도 시간 복잡도 O(NlogN)에 오름차순 정렬이 완료된다. 보통 최소 힙 자료구조의 최상단 원소는 항상 '가장 작은' 원소이기 때문이다.힙에 원소를 삽입할 때는 heapq.heappush() 메소드를 이용하고, 힙..

Python 2024.01.29

(Python) itertools

itertools Python에서 반복되는 데이터를 처리하는 기능을 포함한 라이브러리이다. 1. permutations 리스트와 같은 iterable 객체에서 n개의 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)를 계산해준다. permutations는 클래스이므로 객체 초기화 이후에는 리스트 자료형으로 변환하여 사용한다. from itertools import permutations data = ['A', 'B', 'C'] result = list(permutations(data, 3))​ 2. combinations 리스트와 같은 iterable 객체에서 n개의 데이터를 뽑아 순서를 고려하지 않고 나열하는 모든 경우(조합)를 계산해준다. combinations는 클래스이므로 객체 초기화 이후에는 리스..

Python 2024.01.29

(Python) 주요 내장 함수

내장 함수 Python이라면 기본적으로 내장되어있는 함수이다. input() : 사용자 입력 print() : 출력 sum() : iterable 객체가 입력으로 주어졌을 때, 모든 원소의 합을 반환한다. result = sum([1, 2, 3, 4, 5]) -> 15​ min() : iterable 객체가 입력으로 주여졌을 때, 가장 작은 값을 반환한다. result = min([7, 3, 5, 2]) -> 2​ max() : 가장 큰 값 반환 result = max(7, 3, 5, 2) -> 7​ eval() : 수학 수식이 문자열 형식으로 입력이 들어올 때, 해당 수식을 계산한 결과를 반환한다. result = eval("(3 + 5) * 7") -> 56​ sorted() : iterable 객체..

Python 2024.01.29

(Python) 알아두면 좋은 점

1. 실수형 a = 5. -> 5.0 b = -.7 -> -0.7 2. 2진수 소수 연산 2진수에서는 0.9를 정확히 표현할 방법이 없다. 0.3 + 0.6은 0.89999999..로 저장된다. 이런 경우 round()를 사용한다. 흔히 코딩 테스트 문제에서는 소수점 다섯번째 자리에서 반올림한 결과가 같으면 정답으로 인정하는 식으로 처리한다. a = 0.3 + 0.6 print(round(a, 4)) 3. 수 자료형 연산 print(a / b) # 나누기 print(a % b) # 나머지 print(a // b) # 몫 print(a ** b) # 제곱 4. 리스트 * 선언 a = list() a = [] * 크기가 N이고, 모든 값이 0인 1차원 리스트 초기화 n = 10 a = [0] * n -> [..

Algorithm 2024.01.27