PS [11일차]

Daniel·2022년 7월 27일
0

PS

목록 보기
11/32
post-thumbnail

문제번호

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를 이용하여 시간초과를 피했다.

TIL

  • StringBuilder

    • 이 문제를 제출할때 시간초과가 발생해서 틀렸었다. 확실히 StringBuilder로 한번에 모아서 출력하면 System.out.println()의 시간 소모를 어느정도 커버할 수 있다.

    • StringBuilder, StringBuffer, String에 대한 정보를 정리할 필요가 있어 보인다.

profile
폐쇄

0개의 댓글