본문 바로가기

분류 전체보기216

백준 2164: 카드 2(java) 문제풀이 큐의 front에서 뽑아낸 값을 rear에 삽입해야 하므로, 양 끝단에서 삽입과 삭제가 모두 일어나는 덱을 사용하여 풀면 된다.(덱에 대한 자세한 설명은 링크)https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Deque.html Deque (Java SE 21 & JDK 21)Type Parameters: E - the type of elements held in this deque All Superinterfaces: Collection , Iterable , Queue , SequencedCollection All Known Subinterfaces: BlockingDeque All Known Implementing.. 2024. 7. 16.
백준 18258: 큐 2(java) 문제풀이이전에 풀었던 스택 기본 문제들과 동일한 유형이므로, 똑같이 입력을 받고 switch문으로 케이스를 나누어 풀이하면 된다. 큐를 별도로 구현하지 않고 JDK에서 제공하는 기본 라이브러리를 사용했다. (큐 직접 구현은 이곳을 참고) 이전 큐 문제에서는 back을 구현할 때 num을 출력하는 것으로 해결했는데, 이번에는 덱을 사용해 peekLast() 메소드로 풀이했다. StringBuilder를 사용하지 않으면 시간 초과 에러가 떠서 사용해 주었다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Deque;import java.util.LinkedList;i.. 2024. 7. 15.
백준 12789: 도키도키 간식드리미(java) 문제풀이스택과 큐를 이용하여 풀었다.메인 대기열(현재 대기열)을 큐로, 한 명 씩 설 수 있는 공간(옆 대기열)을 스택으로 만들었다.메인 대기열을 스캔하며 현재 순번이 아닌 사람은 옆 대기열로 보낸다.while(!queue.isEmpty()) { //현재 대기열 빌 때까지 if(queue.peek()==turn) { queue.poll(); turn++; } else if(!stack.isEmpty()&&stack.peek()==turn) { stack.pop(); turn++; } else stack.push(queue.poll());}큐의 front값이 turn과 일치하면(turn=1로 초기화하였다) 간식을 받은 것으로 간주하여 해당 값을 삭제하고 turn을 1 증가시킨다(다음 사람으로 넘어.. 2024. 7. 15.
덱(deque): double-ended-queue- 큐의 전단(front)과 후단(rear)에서 모두 삽입과 삭제가 가능한 큐- 중간에 삽입하거나 삭제하는 것은 불가 덱의 추상 자료형- 덱은 스택과 큐의 연산들을 모두 가지고 있음- add_front와 delete_front 연산은 스택의 push와 pop 연산과 동일- add_rear 연산과 delete_front 연산은 각각 큐의 enqueue와 dequeue 연산과 동일- 덱은 스택이나 큐에 비해 융통성 많은 자료 구조- 덱의 전단과 관련된 연산들만을 사용하면 스택으로 동작- 삽입은 후단, 삭제는 전단만을 사용하면 큐로 동작배열을 이용한 덱의 구현- 원형 큐와 덱은 매우 유사하므로 원형 큐를 확장하여 덱 구현 가능- 큐에서 사용한 배열 data와 .. 2024. 7. 15.
큐의 응용: 버퍼 큐는 서로 다른 속도로 실행되는 두 프로세스 간의 상호 작용을 조화키는 버퍼의 역할을 할 수 있다. 대개 데이터를 생산하는 생산자 프로세스가 있고, 데이터를 소비하는 소비자 프로세스가 있을 때 이 사이에 큐로 구성되는 버퍼가 존재한다. 생산자-소비자 프로세스 외에도 신호등을 순차적으로 제어하는 교통 관리 시스템, 프로세스들을 저장하는 CPU 스케줄링 등의 큐 응용 분야가 있다. 프로그램 5-3 큐 응용 프로그램- 큐에 일정한 비율(20%)로 난수를 생성하여 입력하고, 일정한 비율(10%)로 큐에서 정수를 꺼내는 프로그램 - 생산자(20%)가 소비자(10%)보다 빠르므로 큐가 포화 상태가 될 가능성이 높아짐#include #include #define MAX_QUEUE_SIZE 5typedef int el.. 2024. 7. 15.
백준 10845: 큐(java) 문제풀이JDK에서 기본적으로 제공하는 큐를 사용하거나 큐를 직접 구현하여 풀이할 수 있다.BufferedReader 또는 Scanner를 이용해 입력받고, switch문을 사용해 명령별로 작성해주면 된다. 1. 기본 큐 인터페이스 사용Queue queue=new LinkedList();큐 객체를 선언하려면 위와 같이 사용하면 된다. 정수형 데이터를 입력받는 문제이므로 자료형은 Integer로 설정한다.(큐에 대한 더 자세한 내용은 여기) Queue (Java SE 21 & JDK 21)Type Parameters: E - the type of elements held in this queue All Superinterfaces: Collection , Iterable All Known Subinterfa.. 2024. 7. 14.