반응형
기초 자료구조인 Stack에 대해서 알고 있다면 어렵지는 않은 문제이다..
하지만 시간 초과가 떴고..
검색해보니 명령 N 이 최대 10,000이고 명령마다 println으로 출력 시 시간 초과가 발생할 수 있으므로 StringBufferr를 사용해주면 해결된다고 한다.
시간 초과
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Integer> stack = new Stack<>();
int num = sc.nextInt();
for(int i = 0; i < num; i++) {
String order = sc.next();
switch (order) {
case "push":
stack.push(sc.nextInt());
break;
case "pop":
if(stack.empty()) {
System.out.println(-1);
}
else {
System.out.println(stack.pop());
}
break;
case "size":
System.out.println(stack.size());
break;
case "empty":
if(stack.empty()) {
System.out.println(1);
}
else {
System.out.println(0);
}
break;
case "top":
if(stack.empty()) {
System.out.println(-1);
}
else {
System.out.println(stack.peek());
}
break;
}
}
}
}
시간 초과 해결
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuffer sb = new StringBuffer();
Stack<Integer> stack = new Stack<>();
int num = sc.nextInt();
for(int i = 0; i < num; i++) {
String order = sc.next();
switch (order) {
case "push":
stack.push(sc.nextInt());
break;
case "pop":
if(stack.isEmpty()) {
sb.append(-1).append('\n');
// System.out.println(-1);
} else {
sb.append(stack.pop()).append('\n');
// System.out.println(stack.pop());
}
break;
case "size":
sb.append(stack.size()).append('\n');
// System.out.println(stack.size());
break;
case "empty":
if(stack.isEmpty()) {
sb.append(1).append('\n');
// System.out.println(1);
}
else {
sb.append(0).append('\n');
// System.out.println(0);
}
break;
case "top":
if(stack.isEmpty()) {
sb.append(-1).append('\n');
// System.out.println(-1);
}
else {
sb.append(stack.peek()).append('\n');
// System.out.println(stack.peek());
}
break;
}
}
System.out.println(sb);
}
}
주의할 점은 System.out.println() 처럼 출력 후 줄바꿈까지 해주기 위해서는 "\n"을 해야한다는 점이다.
반응형
'자료구조 & 알고리즘' 카테고리의 다른 글
[자료구조] 연결 리스트(LinkedList) 자료구조 알아보기 & Java 예제 코드 (0) | 2023.06.04 |
---|---|
[자료구조] 배열(Array) 자료구조 알아보기 & Java 예제 코드(+ ArrayList) (0) | 2023.06.04 |
[자료구조] 우선순위 큐(Priority Queue)와 힙(Heap) (0) | 2022.12.25 |
[기초 자료구조] Stack(스택) - Array 기반 / LinkedList 기반 (0) | 2022.07.24 |
[JAVA] Java Collections Framework(자바 컬렉션 프레임워크) (0) | 2022.07.24 |