본문 바로가기

Python

(4)
효율적인 소수 찾기: 에라토스테네스의 체 소수란 1과 자기 자신만으로 나누어 떨어지는 자연수를 말한다. 에라토스테네스의 체는 다음과 같은 단계로 소수를 찾는다초기 설정: 2부터 원하는 최대 숫자까지의 모든 자연수를 나열한다.소수 기준 배수 제거:처음으로 2를 선택하고, 2의 배수(4, 6, 8, ...)를 모두 지운다.다음 소수인 3을 선택하고, 3의 배수(6, 9, 12, ...)를 지운다.이 과정을 계속 반복하여 소수의 배수를 모두 지운다.종료 조건: 선택한 소수가 N제곱근에 도달하면 반복을 종료한다. 이때 남아 있는 숫자들은 모두 소수다.에라토스테네스의 체는 시간 복잡도가 O(nlog(log(n))) 로, 소수를 찾는 데 있어 매우 효율적이다. 다른 소수 찾기 알고리즘, 예를 들어 소수 판별법에 비해 속도가 빠르기 때문에 대규모 소수 검색..
데이터 빈도 계산을 단순하게: 파이썬 Counter 1. Counter란 무엇인가?Counter는 파이썬의 collections 모듈에 포함된 클래스 중 하나로, 리스트나 문자열 등의 시퀀스에서 각 요소의 빈도를 쉽게 계산할 수 있는 도구다. 일종의 딕셔너리 형태로 동작하며, 요소를 키(key)로, 해당 요소가 등장한 횟수를 값(value)으로 저장한다.2. Counter의 기본 사용법Counter는 리스트나 문자열과 같은 반복 가능한 객체를 인자로 받아 그 안의 요소들이 몇 번 등장했는지를 계산해준다. 다음은 기본적인 사용 예시다from collections import Counter# 리스트에서 빈도 계산my_list = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]counter = Counter(my_list)print(counter) #..
Deque를 활용한 파이썬 최적화: 리스트를 대체하는 이유 deque(double-ended queue)는 Python의 collections 모듈에서 제공하는 자료구조로, 양쪽 끝에서 효율적으로 요소를 추가하고 제거할 수 있는 기능을 제공한다.일반 리스트와 다른 데이터 구조와 비교할 때, deque의 장점을 아래와 같이 정리할 수 있다.1. 효율적인 삽입과 삭제deque: 양쪽 끝에서의 요소 추가(append 및 appendleft)와 제거(pop 및 popleft)가 **O(1)**의 시간 복잡도를 가진다.리스트: 리스트의 처음에서 요소를 제거하거나 추가하는 작업은 평균적으로 **O(N)**의 시간 복잡도를 가진다. 즉, 리스트의 크기가 커질수록 비효율적이다.2. 메모리 효율성deque: deque는 메모리를 동적으로 관리하며, 필요한 경우 내부 구조를 재조..
효율적인 탐색을 위한 자료구조: 리스트와 세트 비교 1. 리스트와 세트의 정의리스트 (List): 순서가 있는 데이터의 집합으로, 중복된 값을 허용하며, 인덱스를 통해 접근할 수 있다.세트 (Set): 순서가 없고, 중복된 값을 허용하지 않는 데이터의 집합이다. 해시 테이블을 기반으로 구현되어 있어, 평균적으로 탐색 시간이 빠르다.2. 탐색 성능 비교리스트에서 특정 요소를 찾는 과정은 순차적으로 모든 요소를 비교해야 하므로 **O(N)**의 시간 복잡도를 가진다. 반면, 세트는 해시 함수를 사용하여 특정 요소를 빠르게 찾을 수 있어 평균적으로 **O(1)**의 시간 복잡도를 가진다.3. 예제 코드아래 코드는 두 개의 리스트를 비교하여, 두 번째 리스트의 각 요소가 첫 번째 리스트에 존재하는지를 확인하는 간단한 예시이다. 이 예제에서 리스트를 세트로 변환하..