Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준 10866 자바
- 백준 28278 자바
- 28278 스택 2
- 2164 자바
- IAM Identity Center
- 2346 풍선 터뜨리기
- 파이썬
- 2748 자바
- IAM 사용자
- 자바 2346
- 자바 28278
- 10813 자바
- 자바 1003
- 1764 자바
- 자바 2164
- 백준
- 데보션영 3기
- 10810 자바
- 2798 자바
- 백준 2346 자바
- 그리디
- dfs
- 자바 10866
- 10807 자바
- 백준 1764 자바
- 티움투어
- 1010 자바
- 코딩테스트
- BFS
- 자바
Archives
- Today
- Total
자두의 데브로그
[자바] 백준 10828번 스택 본문
https://www.acmicpc.net/problem/10828
[문제 이해]
문제의 제목처럼 스택을 구현하는 문제였다. 실버 4라고는 하지만 스택만 안다면 충분히 풀 수 있는 문제라 금방 풀었던 것 같다!
[문제 풀이]
파이썬에서도 스택이나 큐를 사용하는 문제를 풀 때 deque를 사용했던 것처럼 자바에서도 deque를 사용하여 이 문제를 해결하였다.
deque는 linked list로 가져와서 사용했고, deque 라이브러리 내에 있는 add(), getLast(), removeLast() 등을 활용했다. 스택이니까 top이나 pop의 경우, 가장 마지막에 삽입된 원소를 찾기 위해 Last에서 꺼낼 수 있도록 해주었다. isEmpty()의 경우, boolean 값을 반환하기 때문에 if문에다가 바로 넣어서 만약 비어있으면 그대로 1을 출력하도록, 비어있지 않다면 0을 출력하도록 하였다.
입력 받을 때 push가 아니면 String 하나만 받게 되는데 이를 처리하기 위해 " " 즉, 빈칸을 포함하고 있으면 String 배열에 두 가지의 값을 저장할 수 있는 코드를 추가하였다.
import java.io.*;
import java.util.Deque;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Deque<Integer> deque = new LinkedList<>();
for(int i = 0; i< N; i++){
String str = br.readLine();
String[] str_arr = new String[2];
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
if(str.contains(" ")){
str_arr = str.split(" ");
str = str_arr[0];
}
if(str.equals("push")){
deque.add(Integer.parseInt(str_arr[1]));
}
else if(str.equals("top")){
if(deque.isEmpty()){
bw.write("-1");
}
else{
bw.write(String.valueOf(deque.getLast()));
}
bw.newLine();
}
else if(str.equals("size")){
bw.write(String.valueOf(deque.size()));
bw.newLine();
}
else if(str.equals("empty")){
if(deque.isEmpty()){
bw.write("1");
}
else{
bw.write("0");
}
bw.newLine();
}
else{
if(deque.isEmpty()){
bw.write("-1");
}
else{
bw.write(String.valueOf(deque.removeLast()));
}
bw.newLine();
}
bw.flush();
}
}
}
'코딩테스트 > Java' 카테고리의 다른 글
[자바] 백준 28278번 스택 2 (0) | 2024.07.03 |
---|---|
[자바] 백준 10773번 제로 (0) | 2024.07.03 |
[자바] 백준 2346번 풍선 터뜨리기 (0) | 2024.07.02 |
[자바] 백준 10866번 덱 (2) | 2024.07.02 |
[자바] 백준 1158번 요세푸스 문제 (0) | 2024.07.01 |