📦 문제
stack을 이해한 이후 활용해보고 싶은마음에 풀은 문제
push,pop을 입력받는 곳을 if처리 하려다 그러면 입력때마다
if~elseif를 타고 내려가야 하는게 비효율적이라고 생각되어서 switch로 작성
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class les10828 {
/*
* 제목: 스택
* - 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오
*
* Stack구현
* - Stack을 담을 배열
* - top: stack의 포인터
* - Stack생성자
* - 생성 시 입력받은 숫자만큼 배열 생성
* - 포인터를 -1로 생성 => -1(=없다, 배열은 0부터 시작)
*/
private static int top = -1;
private static int[] stack;
public static void main(String[] args) throws IOException {
//속도 -> BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
//입력 갯수 받기
int num = Integer.parseInt(br.readLine());
stack = new int[num];
for(int i = 0; i < num; i++){
//한줄읽고 " ", 공백으로 나누어서 토크나이저가 순서대로 출력
st = new StringTokenizer(br.readLine(), " ");
switch (st.nextToken()) {
case "push":
push(Integer.parseInt(st.nextToken()));
break;
case "pop":
pop();
break;
case "size":
size();
break;
case "top":
top();
break;
case "empty":
empty();
break;
}
}
br.close();//br닫아주기
}
//top을 ++이후 배열에 값을 넣어주기
public static void push(int num){
top++;
stack[top] = num;
}
//pop: top위치를 출력 후, top을 한칸 후진
public static void pop(){
if(top == -1) System.out.println("-1");
else {
System.out.println(stack[top]);
top--;
}
}
//stack이 가지고있는 정수의 개수
public static void size(){
System.out.println(top+1);
}
//stack에서 top이 가르키는 위치를 출력
public static void top(){
if(top == -1) System.out.println("-1");
else System.out.println(stack[top]);
}
//비어있는지 검즘 => top == -1 => 비어있다
public static void empty(){
if(top == -1) System.out.println("1");
else System.out.println("0");
}
}
'Algorithm > 백준' 카테고리의 다른 글
[백준] 11654번 아스키 코드 (0) | 2022.07.22 |
---|---|
[백준] 1712번 손익분기점 (0) | 2022.07.22 |
백준 문제풀이 Github-TIL (0) | 2021.09.25 |
3052번: 나머지 (0) | 2021.09.16 |
2742: 기찍 N (0) | 2021.09.16 |