10828번: 스택
https://www.acmicpc.net/problem/10828
# 코드
import java.io.*;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// LinkedList 로 스택 구현
LinkedList<Long> s_list = new LinkedList<>();
// 명령의 수 N
long n = Long.parseLong(br.readLine());
for (long i = 0; i < n; i++) {
String line = br.readLine();
switch (line.substring(0, 3)) {
case "pus":
StringTokenizer st = new StringTokenizer(line, " ");
String p = st.nextToken(); // x를 얻기 위한 임시 토큰
Long x = Long.parseLong(st.nextToken());
s_list.add(x);
break;
case "pop":
if (s_list.size() == 0) {
bw.write(String.valueOf(-1) + "\n");
} else {
// 리스트의 뒤쪽을 스택의 열린 입구라고 생각
// pollLast() : 마지막 노드를 반환하며 제거하는 메소드
bw.write(String.valueOf(s_list.pollLast()) + "\n");
}
break;
case "siz":
bw.write(String.valueOf(s_list.size()) + "\n");
break;
case "emp":
if (s_list.size() == 0) {
bw.write(String.valueOf(1) + "\n");
} else {
bw.write(String.valueOf(0) + "\n");
}
break;
case "top":
if (s_list.size() == 0) {
bw.write(String.valueOf(-1) + "\n");
} else {
// getLast() : 마지막 노드를 반환하는 메소드
bw.write(String.valueOf(s_list.getLast()) + "\n");
}
break;
}
}
// Reader 버퍼 닫기
br.close();
// Writer 버퍼 비운 뒤 닫기
bw.flush();
bw.close();
}
}
- 바로 전 문제인 18258과 거의 동일해서 쉽게 푼 문제였다.
- 메소드에 관해서는 아래 블로그를 많이 참고했다 :D
🧱 자바 LinkedList 구조 & 사용법 - 정복하기
LinkedList 컬렉션 자바의 Linked List는 ArrayList와 같이 인덱스로 접근하여 조회 / 삽입이 가능하지만 내부 구조는 완전히 다르게 구성되어 있다는 점이 특징이다. ArrayList는 내부적으로 배열을 이용하
inpa.tistory.com
'코딩테스트 > 자바 문제풀이' 카테고리의 다른 글
[자료구조] 백준 1158 요세푸스 문제 (0) | 2024.07.13 |
---|---|
[자료구조] 백준 9012 괄호 (0) | 2024.07.12 |
[자료구조] 백준 18258 큐(2) (0) | 2024.07.10 |
[새싹: 함수] 백준 15964, 2475 (0) | 2024.07.09 |
[새싹: 문자열 (2)] 백준 2754, 27866, 11718, 9086 (0) | 2024.07.08 |