https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
오늘부터는 알고리즘 공부를 분류에 따라서 하나씩 해나가려고 한다.
순서는 아래 블로그를 참고했다!
알고리즘 공부 순서
이번 포스팅에서는 알고리즘 공부 순서를 정리해보고자 합니다. 이는 누군가에게는 맞지 않을 수 있으며, 지극히 인터넷에 돌아다니는 영상이나 사이트들을 참고하여 작성한 것이니 참고만 해
patiencelee.tistory.com
✨ 분류 : 자료구조
💡 풀이
스택의 기본 구조를 익히기 위한 것으로, 풀이가 어렵지 않다.
덱의 기본 구조를 알고 있으면 어렵지 않게 풀 수 있음! 설명할 것이 딱히 없다.
package data_structure_part_01;
import java.io.*;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Q10828 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
Deque<Integer> deq = new ArrayDeque<>();
for(int i = 0; i < n; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
String str = st.nextToken();
String s = i == n-1 ? "" : "\n";
// push
if(str.equals("push")){
deq.push(Integer.valueOf(st.nextToken()));
}
// pop
else if(str.equals("pop")){
// 덱이 비어있을 경우
if(deq.isEmpty()){
bw.write("-1" + s);
}else{
bw.write(deq.pop()+ s);
}
}
// size
else if(str.equals("size")){
bw.write(deq.size()+ s);
}
//empty
else if(str.equals("empty")){
bw.write( (deq.isEmpty() ? "1" : "0")+s );
}
// top
else if(str.equals("top")){
if(deq.isEmpty()){
bw.write("-1" + s);
}else {
bw.write(deq.peek()+ s);
}
}
}
bw.flush();
bw.close();
br.close();
}
}
'Algorithm' 카테고리의 다른 글
[033] 9012. 괄호 (0) | 2024.03.20 |
---|---|
[032] 9093. 단어 뒤집기 (0) | 2024.03.20 |
[030] 2579. 계단 오르기 (0) | 2024.03.15 |
[029] 2470. 두 용액 (0) | 2024.03.13 |
[028] 13699. 점화식 (1) | 2024.03.12 |