백준 10845번 <큐>
백준 알고리즘 10845번
https://www.acmicpc.net/problem/10845
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 ��
www.acmicpc.net
요즘 옛날에 들었던 코드플러스 알고리즘 기초 문제를 차근차근 풀어보는 즁
ㅎㅎ 모각코때 풀던 것보다 쉬운거 같다.. 아직 자료구조 부분을 풀고 있어서 그런가...
쉬우니까 꾸준히 풀 수 있겠지...
10845번
그냥 큐 만들면 된다.
간_단
명령어 종류
push X : 정수 X를 큐에 넣는 연산
pop : 큐에서 가장 앞에 있는 정수를 뺴고, 그 수를 출력. (만약 큐가 비어있으면 -1 출력)
size : 큐에 들어있는 정수의 개수 출력
empty : 큐가 비어있으면 1, 아니면 0을 출력
front : 큐의 가장 앞에 있는 정수 출력. (만약 큐가 비어있으면 -1 출력)
back : 큐의 가장 뒤에 있는 정수 출력. (만약 큐가 비어있으면 -1 출력)
문제해결
LinkedList를 만들어서 구현했다.
입력은 BufferedReader와 StringTokenizer를 이용해 받았다. (<에디터> 문제에서 배운 거 활용하기!!!)
push X를 구현할 때 nextToken()으로 X를 받을 수 있어서 좋은 것 같다.
명령어 종류
push X : add()를 이용해 뒤에 계속 붙여준다.
pop : remove(0)을 이용해 맨 앞의 정수를 삭제한다.
size : size()를 이용한다.
empty : isEmpty()를 이용한다.
front : get(0)으로 맨 앞의 정수를 얻는다.
back : get(size() -1)으로 맨 뒤의 정수를 얻는다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
LinkedList<Integer> queue = new LinkedList<Integer>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
for (int i = 0; i < num; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String str = st.nextToken();
switch (str) {
case "push": {
int pushNum = Integer.parseInt(st.nextToken());
queue.add(pushNum);
break;
}
case "pop": {
if (!queue.isEmpty()) {
System.out.println(queue.get(0));
queue.remove(0);
} else {
System.out.println(-1);
}
break;
}
case "size": {
System.out.println(queue.size());
break;
}
case "empty": {
if (queue.isEmpty()) {
System.out.println(1);
} else {
System.out.println(0);
}
break;
}
case "front": {
if (!queue.isEmpty()) {
System.out.println(queue.get(0));
} else {
System.out.println(-1);
}
break;
}
case "back": {
if (!queue.isEmpty()) {
System.out.println(queue.get(queue.size() - 1));
} else {
System.out.println(-1);
}
break;
}
default:
}
}
}
}
와! 풀었다!