본문 바로가기

분류 전체보기

(41)
효율적인 소수 찾기: 에라토스테네스의 체 소수란 1과 자기 자신만으로 나누어 떨어지는 자연수를 말한다. 에라토스테네스의 체는 다음과 같은 단계로 소수를 찾는다초기 설정: 2부터 원하는 최대 숫자까지의 모든 자연수를 나열한다.소수 기준 배수 제거:처음으로 2를 선택하고, 2의 배수(4, 6, 8, ...)를 모두 지운다.다음 소수인 3을 선택하고, 3의 배수(6, 9, 12, ...)를 지운다.이 과정을 계속 반복하여 소수의 배수를 모두 지운다.종료 조건: 선택한 소수가 N제곱근에 도달하면 반복을 종료한다. 이때 남아 있는 숫자들은 모두 소수다.에라토스테네스의 체는 시간 복잡도가 O(nlog(log(n))) 로, 소수를 찾는 데 있어 매우 효율적이다. 다른 소수 찾기 알고리즘, 예를 들어 소수 판별법에 비해 속도가 빠르기 때문에 대규모 소수 검색..
2024.10.5 백준(Python) 10845 큐 큐 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율0.5 초 (추가 시간 없음)256 MB138993656175166549.162% 문제정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 여섯 가지이다.push X: 정수 X를 큐에 넣는 연산이다.pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 큐에 들어있는 정수의 개수를 출력한다.empty: 큐가 비어있으면 1, 아니면 0을 출력한다.front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가..
데이터 빈도 계산을 단순하게: 파이썬 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) #..
2024.10.5 백준(Python) 10816 숫자 카드 2 숫자 카드 2  시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초256 MB162478641504567737.910%문제숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오.입력첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다.셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의..
2024.10.5 백준(Python) 18115 카드놓기 카드 놓기   시간 제한메모리 제한제출정답맞힌 사람정답 비율2 초 (추가 시간 없음)1024 MB56193099239454.261%문제수현이는 카드 기술을 연습하고 있다. 수현이의 손에 들린 카드를 하나씩 내려놓아 바닥에 쌓으려고 한다. 수현이가 쓸 수 있는 기술은 다음 3가지다.제일 위의 카드 1장을 바닥에 내려놓는다.위에서 두 번째 카드를 바닥에 내려놓는다. 카드가 2장 이상일 때만 쓸 수 있다.제일 밑에 있는 카드를 바닥에 내려놓는다. 카드가 2장 이상일 때만 쓸 수 있다.수현이는 처음에 카드 N장을 들고 있다. 카드에는 1부터 N까지의 정수가 중복되지 않게 적혀 있다. 기술을 N번 사용하여 카드를 다 내려놓았을 때, 놓여 있는 카드들을 확인했더니 위에서부터 순서대로 1, 2, …, N이 적혀 있었..
2024.10.4 백준(Python) 2164 카드2 카드2    시간 제한메모리 제한제출정답맞힌 사람정답 비율2 초 (추가 시간 없음)128 MB135135702065465950.903%문제N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다.이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다.예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24..
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. 예제 코드아래 코드는 두 개의 리스트를 비교하여, 두 번째 리스트의 각 요소가 첫 번째 리스트에 존재하는지를 확인하는 간단한 예시이다. 이 예제에서 리스트를 세트로 변환하..