본문 바로가기

728x90

(5)
[프로그래머스] Lv.2 두 큐 합 같게 만들기 [Python] 두 개의 큐가 주어지면 다음 작업을 통해 각 큐의 합이 서로 같게 만드는 최소 횟수를 구하는 문제 작업: 한 큐의 첫 원소를 다른 큐의 마지막 원소로 옮기는 작업을 한 횟수로 취급 더보기 문제 설명 길이가 같은 두 개의 큐가 주어집니다. 하나의 큐를 골라 원소를 추출$($pop$)$하고, 추출된 원소를 다른 큐에 집어넣는$($insert$)$ 작업을 통해 각 큐의 원소 합이 같도록 만들려고 합니다. 이때 필요한 작업의 최소 횟수를 구하고자 합니다. 한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주합니다. 큐는 먼저 집어넣은 원소가 먼저 나오는 구조입니다. 이 문제에서는 큐를 배열로 표현하며, 원소가 배열 앞쪽에 있을수록 먼저 집어넣은 원소임을 의미합니다. 즉, pop을 하면..
[백준] 7662번 이중 우선순위 큐[Python] - 자료구조 k개의 명령어와 정수가 주어진다. I는 삽입, D는 삭제를 의미하는 연산 I n: n을 큐에 삽입 D 1: 최댓값 삭제 D -1: 최솟값 삭제 모든 연산 후 큐에 남아있는 최댓값과 최솟값을 출력, 큐가 비어있으면 'EMPTY'를 출력하는 문제 큐가 비어있을 때, 명령어 D는 무시하면 됨 더보기 문제 이중 우선순위 큐$($dual priority queue$)$는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭제할 때 연산$($operation$)$ 명령에 따라 우선순위가 가장 높은 데이터 또는 가장 낮은 데이터 중 하나를 삭제하는 점이다. 이중 우선순위 큐를 위해선 두 가지 연산이 사용되는데, 하나는 데이터를 삽입하는 연산이고 다른 하나는 데..
[백준] 1260번 DFS와 BFS [Python] - DFS, BFS 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 문제 더보기 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 B..
[백준] 21736번 헌내기는 친구가 필요해 [Python] - 그래프 이론 $N \times M$ 크기이며 캠퍼스에서 O는 빈 공간, X는 벽, I는 도연이, P는 사람으로 주어질 때, 상하좌우로만 이동가능한 도연이가 몇 명의 사람을 만날 수 있을까? 더보기 문제 2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고 싶다. 도연이가 다니는 대학의 캠퍼스는 $N \times M$ 크기이며 캠퍼스에서 이동하는 방법은 벽이 아닌 상하좌우로 이동하는 것이다. 예를 들어, 도연이가 $(x, y)$에 있다면 이동할 수 있는 곳은 $(x+1, y)$, $(x, y+1)$, $(x-1, y)$, $(x, y-1)$이다. 단, 캠퍼스의 밖으로 이동할 수는 없..
[백준] 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를 사..