DY N DY
실력키우기 큐(JAVA) 본문
1697 : 큐(queue)
제한시간: 1Sec 메모리제한: 32mb
해결횟수: 946회 시도횟수: 1889회
큐는 먼저 들어온 데이터가 먼저 출력된다. 이러한 구조를 선입선출(FIFO - First In First Out)이라고 한다.
이러한 큐 자료구조는 보통 우리의 생활에서는 매우 일상적인 자료구조이다. 큐 자료구조의 형태를 가장 흔히 볼 수 있는 게 “줄서기”가 될 것이다. 은행 창구에서 줄을 서거나, 버스를 기다리기 위해서 줄을 설 경우 가장 먼저 줄을 선 사람이 가장 먼저 은행 업무를 처리하거나, 버스를 타게 된다.(새치기 하는 경우는 생각하지 말자)
그림과 같은 큐 자료구조를 설계하고, 처리조건에 맞는 출력을 하시오.
≪처리조건≫
1. 주어지는 명령은 다음의 3가지이다.
2. "i a"는 a라는 수를 큐에 넣는다. 이때, a는 10,000 이하의 자연수이다.
3. "o"는 큐에서 데이터를 빼고, 그 데이터를 출력한다. 만약 큐가 비어있으면, "empty"를 출력한다.
4. "c"는 큐에 있는 데이터의 수를 출력한다.
[Copy]7 i 7 i 5 c o o o c | [Copy]2 7 5 empty 0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | /************************************************************** Problem: 1697 User: a132034 Language: Java Result: Success Time:166 ms Memory:8724 kb ****************************************************************/ import java.util.Scanner; public class Main { private static Scanner sc; public static int [] result; public static void main(String[] args) { sc = new Scanner(System.in); int N = sc.nextInt(); //queue 관련 int [] queue = new int [ 10000 ]; int front = 0 , rear = 0 ; sc.nextLine(); //operator String op; for ( int i = 0 ; i < N; ++i) { op = sc.nextLine(); if ( 'i' == (op.toCharArray()[ 0 ])) { queue[front++] = Integer.parseInt(op.substring( 2 )); } else if ( "o" .equals(op)) { if (front == rear) System.out.println( "empty" ); else System.out.println(queue[rear++]); } else if ( "c" .equals(op)) { System.out.println(front-rear); } } } } |
실력키우기의 스택 문제와 기본적인 구조는 동일하다 (스택)
queue는 stack과 달리 먼저 들어간 데이터가 빠져나오는 FIFO (First In - First Out)구조이기 때문에
이를 구현하기위해 2개의 변수가 필요하다(front, rear)
front 변수는 입력을 받기 위해 사용하였고, rear변수는 출력을 하기 위해 사용하였다.
만약 front와 rear가 동일한 경우에는 queue에 데이터가 없는 것으로 가정하였으며
총 데이터 수는 front와 rear의 차이만큼이다.
'PARK > ALGORITHM' 카테고리의 다른 글
실력키우기 후위표기법(JAVA) (0) | 2016.05.02 |
---|---|
실력키우기 수열(JAVA) (0) | 2016.04.29 |
실력키우기 숫자의 개수(JAVA) (0) | 2016.04.28 |
실력키우기 문자열찾기(JAVA) (0) | 2016.04.28 |
실력키우기 스택(JAVA) (0) | 2016.04.27 |