Question
https://www.acmicpc.net/problem/28278
Code
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
StringBuilder str = new StringBuilder();
int N = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
for (int n = 0; n < N; n++) {
st = new StringTokenizer(br.readLine());
int M = Integer.parseInt(st.nextToken());
switch (M) {
case 1:
stack.push(Integer.parseInt(st.nextToken()));
break;
case 2:
if (stack.isEmpty())
str.append(-1).append("\n");
else
str.append(stack.pop()).append("\n");
break;
case 3:
str.append(stack.size()).append("\n");
break;
case 4:
if (stack.isEmpty())
str.append(1).append("\n");
else
str.append(0).append("\n");
break;
case 5:
if (stack.isEmpty())
str.append(-1).append("\n");
else
str.append(stack.peek()).append("\n");
break;
}
}
System.out.print(str);
br.close();
}
}
- BufferedReader()
- 문자열을 한 줄 단위로 읽을 수 있도록 도와주는 클래스
- 입력 성능이 뛰어남 (Scanner보다 빠름)
- br.readLine()
- 입력을 한 줄(String)로 읽어옴
- ex. "1 42" → "1 42"라는 문자열로 반환
- br.close()
- 입력 스트림을 닫아 메모리 누수 방지
- 보통 사용이 끝난 뒤 close() 해주는 것이 좋음
- InputSteamReader()
- System.in처럼 바이트 기반 입력을 문자 기반으로 변환해줌
- System.in → 바이트 입력
- InputStreamReader → 바이트를 문자로 변환
- BufferedReader → 문자 입력을 한 줄씩 효율적으로 읽기
- StringTokenizer()
- 공백이나 구분자를 기준으로 문자열을 분할해서 토큰 단위로 처리할 수 있음
- st.nextToken()
- 다음 토큰을 반환함
- 다음 값이 없는데 호출하면 NoSuchElementException 발생
정리
항목 | 설명 | 사용 예시 | 공식 문서 링크 |
BufferedReader | 문자 입력을 버퍼링해서 효율적으로 읽음 (한 줄씩 가능) | new BufferedReader(...) | BufferedReader |
br.readLine() | 입력에서 한 줄 전체를 읽어 String으로 반환 | String line = br.readLine(); | readLine() |
br.close() | BufferedReader를 닫아 리소스를 해제함 | br.close(); | close() |
InputStreamReader | 바이트 스트림을 문자 스트림으로 변환 | new InputStreamReader(System.in) | InputStreamReader |
StringTokenizer | 문자열을 **토큰(단어)**으로 분리할 때 사용 | new StringTokenizer("1 42") | StringTokenizer |
st.nextToken() | 다음 토큰을 반환 | String cmd = st.nextToken(); | nextToken() |
출처
https://han-hoon.tistory.com/entry/BOJJAVA-백준-28278-스택-2-자바#google_vignette
[BOJ/JAVA] 백준 28278 : 스택 2 (자바)
문제 정보 문제명 - 스택 2 난이도 - 실버 IV 문제 번호 - 28278번 문제 링크 https://www.acmicpc.net/problem/28278 28278번: 스택 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명
han-hoon.tistory.com
반응형
'Coding Test > 자료구조' 카테고리의 다른 글
[프로그래머스 / Java] Lv.1 햄버거 만들기 (0) | 2025.05.05 |
---|---|
[Data Structure] 큐 (Queue) (0) | 2025.05.05 |
[Data Structure] 자료구조 (0) | 2025.05.04 |
[프로그래머스 / Java] Lv.2 올바른 괄호 (1) | 2025.05.03 |
[Data Structure] 스택 (Stack) (0) | 2025.05.02 |