티스토리 뷰
[단계별로 풀어보기] 백준 28278 / 스택2
문제:
정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.
- 1 X: 정수 X를 스택에 넣는다. (1 ≤ X ≤ 100,000)
- 2: 스택에 정수가 있다면 맨 위의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.
- 3: 스택에 들어있는 정수의 개수를 출력한다.
- 4: 스택이 비어있으면 1, 아니면 0을 출력한다.
- 5: 스택에 정수가 있다면 맨 위의 정수를 출력한다. 없다면 -1을 대신 출력한다
풀이:
스택의 기본 함수를 이용하면 되는 간단한 문제..일 줄 알았으나 예상치 못하게 시간 초과 오류가 발생했다.
지피티에게 물어보니 Scanner를 사용한 게 원인이 될 수 있다는 답변을 받았다.
안 그래도 이 문제를 풀기 전에 Scanner와 BufferedReader의 차이에 대해 알아봤는데... BufferedReader의 장점에 <속도가 빠르다>가 있었다. 그러나 Scanner보다 방식이 복잡해서 외면하고 있었는데... 이제부터 Scanner 집어치우고 BufferedReader 써야겠다...
Stack은
Stack<자료형> 변수명 = new Stack()<>;
과 같은 형태로 사용한다.
Stack을 다룰 때 주로 사용하는 함수는
.push(a) a를 스택의 최상단에 집어넣는다
.pop() 최상단에 있는 값을 pop한다(끄집어낸다. 값을 얻고 스택에서 삭제함)
.peak() 최상단에 있는 값을 삭제하지 않고 슬쩍 들여다보기만 한다
.isEmpty() 스택이 비어 있으면 true
.size() 스택의 크기를 출력한다
코드:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
for (int i = 1; i <= N; i++){
st = new StringTokenizer(br.readLine());
int X = Integer.parseInt(st.nextToken());
switch (X){
case 1:
int a = Integer.parseInt(st.nextToken());
stack.push(a);
break;
case 2:
if (!stack.isEmpty()){
System.out.println(stack.pop());
}
else {
System.out.println(-1);
}
break;
case 3:
System.out.println(stack.size());
break;
case 4:
if (stack.isEmpty()){
System.out.println(1);
}
else {
System.out.println(0);
}
break;
case 5:
if (stack.isEmpty()){
System.out.println(-1);
}
else {
System.out.println(stack.peek());
}
}
}
}
}
'백준 > java' 카테고리의 다른 글
[SWEA 1859 / JAVA] 백만 장자 프로젝트 (0) | 2024.11.19 |
---|---|
[백준 2563 / JAVA] 색종이 (2) | 2024.11.15 |
[백준 2566 / JAVA] 최댓값 (0) | 2024.11.14 |
[백준 2738 / JAVA] 행렬 덧셈 (0) | 2024.11.14 |
[백준 9086 / JAVA] 문자열 (1) | 2024.11.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 컨페티스티커
- 피크민
- 목업적용
- 굿노트다꾸
- 다꾸
- 컨페티png
- 티스토리챌린지
- 자바
- 포토샵목업
- 백준
- 굿노트png
- 목업
- 포토샵png
- 포토샵
- swea
- 코딩테스트
- 백준 #C++
- 굿노트사용법
- 삼성코테
- 피크민블룸
- 굿노트
- 굿노트스티커
- 스티커png
- EOF
- 오블완
- 굿노트스티커자르기
- 무료목업사이트
- 컨페티
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함