10828
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
StringBuilder sb = new StringBuilder ();
// 시도횟수
int testcase =in.nextInt();
// 리스트 선언
ArrayList <Integer> list = new ArrayList<Integer>();
// 시도횟수만큼 반복
for (int i = 0 ; i < testcase; i++) {
// 문자열 입력
String order = in.next();
// 각 케이스마다 다른 코드를 실행
switch (order) {
case "push" :
list.add(in.nextInt());
break;
case "pop" :
if (list.isEmpty()) {
sb.append("-1" + "\n");
break;
}
else {
sb.append(list.get(list.size()-1) + "\n");
list.remove(list.size()-1);
break;
}
case "size" :
sb.append(list.size() + "\n");
break;
case "empty" :
if (list.isEmpty()) {
sb.append("1" + "\n");
break;
}
else {
sb.append("0" + "\n");
break;
}
case "top" :
if ( list.isEmpty()) {
sb.append("-1" + "\n");
break;
}
else {
sb.append(list.get(list.size()-1) + "\n");
break;
}
}
}
// 출력
System.out.println(sb);
}
}
testcase 만큼 입력을 받아 처리를 하는 코드를 작성하는 문제이다.
switch
로 각 케이스를 나누어 실행시켰고 StringBuilder
를 이용하여 시간초과를 피했다.
StringBuilder
이 문제를 제출할때 시간초과가 발생해서 틀렸었다. 확실히 StringBuilder
로 한번에 모아서 출력하면 System.out.println()
의 시간 소모를 어느정도 커버할 수 있다.
StringBuilder
, StringBuffer
, String
에 대한 정보를 정리할 필요가 있어 보인다.