문제 해설
큐 자료구조를 직접 구현하면 되는 문제입니다. 자바 기본 제공 큐를 사용해도 됩니다. 이 글에서는 배열로 직접 큐를 구현하였습니다.
문제 풀이 계획
필요 변수
변수명 | 타입 | 초기값 | 설명 |
N | int | 명령어 수 | |
command | String | 명령어 | |
queue | int[] | 큐 배열 | |
front | int | 0 | 큐의 머리를 가리키는 포인터 |
back | int | 0 | 큐의 끝을 가리키는 포인터 |
해결 로직
- N을 입력받는다.
- N번 동안 명령어를 입력받는다.
- 명령어에 따라 기능을 분기처리 한다.
풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static int[] queue;
public static int N;
public static int front;
public static int back;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
queue = new int[N];
StringBuilder sb = new StringBuilder();
while(N-- > 0) {
st = new StringTokenizer(br.readLine());
String command = st.nextToken();
switch(command) {
case "push": {
int num = Integer.parseInt(st.nextToken());
push(num);
break;
}
case "pop": {
sb.append(pop()).append('\n');
break;
}case "size": {
sb.append(size()).append('\n');
break;
}case "empty": {
sb.append(empty()).append('\n');
break;
}case "front": {
sb.append(front()).append('\n');
break;
}case "back": {
sb.append(back()).append('\n');
break;
}
}
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(sb.toString());
bw.flush();
bw.close();
}
public static void push(int num) {
queue[back++]=num;
}
public static int pop() {
return (back-front == 0) ? -1 : queue[front++];
}
public static int size() {
return back-front;
}
public static int empty() {
return (back-front == 0) ? 1 : 0;
}
public static int front() {
return (back-front == 0) ? -1 : queue[front];
}
public static int back() {
return (back-front == 0) ? -1 : queue[back-1];
}
}
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
'개발 > Problem Solving' 카테고리의 다른 글
[BOJ] 백준 10799번 쇠막대기 - JAVA 자바 풀이 (0) | 2024.06.01 |
---|---|
백준 2164 카드2 - Java 자바 문제 풀이 (1) | 2024.02.08 |
백준 2493 탑 - Java 자바 문제 풀이 (0) | 2024.02.06 |
백준 1874 스택 수열 - Java 자바 문제 풀이 (0) | 2024.02.06 |
백준 10773 제로 - Java 자바 문제풀이 (1) | 2024.02.06 |