JAVA
BAEKJOON(백준) Queue - 18258번 JAVA / PYTHON CODE
violetisme
2023. 1. 27. 21:22
자바 시간초과오류
import java.util.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.awt.List;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//큐를 나타낼 arraylist
ArrayList<Integer> queue = new ArrayList<Integer>();\
//결과값을 나타낼 arraylist
ArrayList<Integer> res = new ArrayList<Integer>();
//testcase 수
int T = Integer.parseInt(br.readLine());
//입력받을 문자열
String[] str;
for(int i=0; i<T; i++) {
//문자열 입력받기
str = br.readLine().split(" ");
//push일 때
if(str[0].equals("push")) {
int num = Integer.parseInt(str[1]);
queue.add(num);
}
//pop일 때
else if(str[0].equals("pop")) {
if (queue.size() == 0)
res.add(-1);
else {
res.add(queue.get(0));
queue.remove(0);
}
}
else if(str[0].equals("size")) {
res.add(queue.size());
}
else if(str[0].equals("empty")) {
if(queue.size() == 0)
res.add(1);
else
res.add(0);
}
else if(str[0].equals("front")) {
if(queue.size() == 0)
res.add(-1);
else
res.add(queue.get(0));
}
else if(str[0].equals("back")) {
if(queue.size() == 0)
res.add(-1);
else
res.add(queue.get(queue.size()-1));
}
}
for(int i=0; i<res.size(); i++)
System.out.println(res.get(i));
}
}
자바 정답 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Deque;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Deque<Integer> q = new LinkedList<>();
int N = Integer.parseInt(br.readLine());
StringTokenizer command;
while(N-- > 0) {
command = new StringTokenizer(br.readLine(), " ");
switch(command.nextToken()) {
case "push":
q.offer(Integer.parseInt(command.nextToken()));
break;
case "pop" :
Integer item = q.poll();
if(item == null) {
sb.append(-1).append('\n');
}
else {
sb.append(item).append('\n');
}
break;
case "size":
sb.append(q.size()).append('\n');
break;
case "empty":
if(q.isEmpty()) {
sb.append(1).append('\n');
}
else {
sb.append(0).append('\n');
}
break;
case "front":
Integer ite = q.peek();
if(ite == null) {
sb.append(-1).append('\n');
}
else {
sb.append(ite).append('\n');
}
break;
case "back":
Integer it = q.peekLast();
if(it == null) {
sb.append(-1).append('\n');
}
else {
sb.append(it).append('\n');
}
break;
}
}
System.out.println(sb);
}
}
파이썬 코드
import sys
from collections import deque
queue = deque()
N = int(sys.stdin.readline())
for _ in range(N) :
i = sys.stdin.readline().split()
if i[0] == 'push' :
queue.append(int(i[1]))
elif i[0] == 'pop' :
if not queue :
print (-1)
else :
print(queue[0])
queue.popleft()
elif i[0] == 'size' :
print(len(queue))
elif i[0] == 'empty' :
if len(queue) == 0 :
print(1)
else :
print(0)
elif i[0] == 'front' :
if not queue:
print(-1)
else :
print(queue[0])
elif i[0] == 'back' :
if not queue :
print(-1)
else :
print(queue[-1])