https://www.acmicpc.net/problem/10828
- 문제
- 문제 풀이
백준 10828번 스택은 실버 4 난이도의 자료 구조 및 스택 문제이다. 스택에 대해서 잘 모른다거나 조금 더 공부하고 싶으면 밑에 있는 링크를 참고하면 되겠다.
https://propercoding.tistory.com/17
이 문제는 스택을 직접 구현하는 문제이다. 총 5가지의 명령이 있고 주어지는 명령을 처리하는 프로그램을 작성하면 된다.
우선 이 문제는 배열이나 리스트 등 다른 자료 구조를 써서 스택을 구현할 필요는 없다. 자바에서 기본으로 제공되는 스택을 이용해서 문제를 풀면 된다. 우선 Integer를 저장하는 스택 stack을 선언한다. 이제 각 명령을 차례대로 살펴보겠다.
1. push X
스택에서 push는 스택 맨 위에 자료를 저장한다는 뜻이다. 그냥 stack.push(n)을 해주면 된다.
2. pop
pop 함수는 스택 맨 위에 있는 것을 제거하는 것이다. stack.pop() 한 것을 출력해주면 된다. 단 스택이 먼저 비어있는지 안 비었는지를 확인해주고 비어있으면 -1을 출력한다.
3. size
스택에 물건이 몇 개나 들어있는지를 확인해주는 함수이다. stack.size()를 하면 된다.
4. empty
스택이 비어있는지 안 비어있는지를 확인해주는 함수이다. stack.isEmpty()를 하면 된다. isEmpty()는 boolean을 반환하는 함수이다. 즉, 스택이 비어있으면 true를 반환시키고 비어있지 않으면 false를 반환한다. 따라서, true가 반환되면 1을, false면 0을 출력하면 된다.
5. top
스택에 맨 위에 있는 물건을 제거하지 않고 출력하면 된다. 먼저 pop 한 다음에 push 하는 방법도 있지만 peek() 함수를 쓰면 된다. peek() 함수는 스택 맨 위에 있는 물건을 제거하지 않고 반환하는 함수이다.
자세한 코드는 밑에서 참고하면 되겠다.
- 코드
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));
Stack<Integer> stack = new Stack<>(); //스택 선언
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String s = st.nextToken();
//push이면 스택에 x push
if (s.equals("push")) stack.push(Integer.parseInt(st.nextToken()));
if (s.equals("pop")) {
if (stack.isEmpty()) {
sb.append(-1 + "\n");
} else {
sb.append(stack.pop() + "\n");
}
}
if (s.equals("size")) sb.append(stack.size() + "\n");
if (s.equals("empty")) {
if (stack.isEmpty()) {
sb.append(1 + "\n");
} else {
sb.append(0 + "\n");
}
}
if (s.equals("top")) {
if (stack.isEmpty()) {
sb.append(-1 + "\n");
} else {
sb.append(stack.peek() + "\n");
}
}
}
System.out.print(sb);
}
}
'백준' 카테고리의 다른 글
[백준] 10870번 : 피보나치 수 5 – JAVA [자바] (0) | 2022.07.10 |
---|---|
[백준] 1316번 : 그룹 단어 체커 – JAVA [자바] (0) | 2022.07.09 |
[백준] 1712번 : 손익분기점 – JAVA [자바] (0) | 2022.07.09 |
[백준] 5622번 : 다이얼 – JAVA [자바] (0) | 2022.07.09 |
[백준] 1463번 : 1로 만들기 – JAVA [자바] (0) | 2022.07.09 |
댓글