본문 바로가기

728x90

자료구조

(7)
[백준] 7662번 이중 우선순위 큐[Python] - 자료구조 k개의 명령어와 정수가 주어진다. I는 삽입, D는 삭제를 의미하는 연산 I n: n을 큐에 삽입 D 1: 최댓값 삭제 D -1: 최솟값 삭제 모든 연산 후 큐에 남아있는 최댓값과 최솟값을 출력, 큐가 비어있으면 'EMPTY'를 출력하는 문제 큐가 비어있을 때, 명령어 D는 무시하면 됨 더보기 문제 이중 우선순위 큐$($dual priority queue$)$는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭제할 때 연산$($operation$)$ 명령에 따라 우선순위가 가장 높은 데이터 또는 가장 낮은 데이터 중 하나를 삭제하는 점이다. 이중 우선순위 큐를 위해선 두 가지 연산이 사용되는데, 하나는 데이터를 삽입하는 연산이고 다른 하나는 데..
[백준] 11279번 최대 힙 [Python] - 자료구조, 힙 0이 아닌 숫자를 배열에 저장 0일 경우 배열 내 최댓값 출력 및 제거 위 연산을 구현하는 문제 더보기 문제 널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 가장 큰 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 자연수는 231보다 작다. 출력 입력..
[백준] 1927번 최소 힙 [Python] - 자료구조, 힙 0이 아닌 숫자를 배열에 저장 0일 경우 배열 내 최솟값 출력 및 제거 위 연산을 구현하는 문제 더보기 문제 널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 첫째 줄에 연산의 개수 N$(1 ≤ N ≤ 100,000)$이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는$($추가하는$)$ 연산이고, x가 0이라면 배열에서 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다. x는 231보다 작은 자연수 또..
[백준] 10845번 큐 [Python] 큐$($Queue$)$는 데이터를 저장하는 자료구조로, 먼저 들어온 데이터가 먼저 나가는 선입선출$($FIFO, First-In-First-Out$)$ 원칙을 따릅니다. 파이썬의 collections 모듈에서는 deque 클래스를 사용하여 큐를 구현할 수 있습니다. 더보기 from collections import deque # 큐 생성 queue = deque() # 데이터 enqueue queue.append(1) queue.append(2) queue.append(3) # 큐에서 데이터 dequeue data = queue.popleft() print(data) # 출력: 1 # 큐가 비어있는지 확인 if not queue: print("큐가 비어있습니다.") 위의 예시에서는 파이썬 deque를 사..
[백준] 10866번 덱 [Python] 덱$($deque, double-ended queue$)$은 파이썬의 collections 모듈에 포함된 자료구조로, 양쪽 끝에서 원소를 추가하거나 제거할 수 있는 큐$($Queue$)$의 확장된 형태입니다. 덱은 리스트$($list$)$와 유사하지만, 리스트보다 효율적인 양방향 연산을 지원합니다. 이러한 특징 때문에 덱는 다양한 상황에서 유용하게 사용될 수 있습니다. 더보기 from collections import deque # 데크 생성 deque_list = deque() # 데크의 오른쪽에 원소 추가 deque_list.append(1) deque_list.append(2) deque_list.append(3) # 데크의 왼쪽에 원소 추가 deque_list.appendleft(0) # 데크 출..
[백준] 10828번 스택 [Python] 스택$($Stack$)$은 데이터를 저장하고 관리하는 자료구조 중 하나로, 후입선출$($Last In, First Out, LIFO$)$ 방식으로 동작합니다. 파이썬에서 스택은 리스트$($list$)$를 활용하여 구현할 수 있으며, 다양한 상황에서 유용하게 사용됩니다. 함수 호출 스택 재귀 함수를 사용할 때 스택은 함수 호출의 형태로 사용됩니다. 재귀 함수는 자기 자신을 호출하는 방식으로 동작하기 때문에 스택을 이용하여 함수 호출 순서를 관리합니다. 재귀적으로 호출되는 함수는 스택에 쌓이고, 함수가 반환되면 스택에서 제거됩니다. 브라우저 뒤로/앞으로 기능 웹 브라우저에서 뒤로 가기, 앞으로 가기 기능은 스택을 사용하여 구현될 수 있습니다. 방문한 페이지의 URL을 스택에 추가하고, 뒤로 가기 버튼을 클릭..
[백준] 1620번 나는야 포켓몬 마스터 이다솜 [Python] 안녕하세요. 첫 포스팅인데, 우선 오늘 풀어본 문제를 올려봅니다. 포켓몬의 이름이 주어지면 이름을 입력 받으면 순서를 출력하고 순서를 입력 받으면 이름을 출력하는 문제 더보기 입력 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 물어봐도 괜찮아. 나는 언제든지 질문에 답해줄 준비가 되어있어. 둘째 줄부터 N개의 줄에 포켓몬의 번호가 1번인 포켓몬부터 N번에 해당하는 포켓몬까지 한 줄에 하나씩 입력으로 들어와. 포켓몬의 이름은 모두 영어로만 이루어져있고, 또, 음... 첫 글자만 대문자이고, 나머지 문자는 소문자로만 이루어져 있어. 아참! 일부 포켓몬..