Java: 스택(Stack)의 개념과 사용법

Java: 스택(Stack)의 개념과 사용법

스택

먼저 들어온것이 나중에 나오는 자료

LIFO(Last In First Out)

상황으로 이해

짱구아빠는 a라는 일을 하고 있다

이 일을 마치기 전에 b라는 일을 해달라고 연락이 왔다

b를 마치기 전에 c라는 일을 해달라고 연락이 왔다

c를 마치기 전에 d라는 일을 해달라고 연락이 왔다

d를 끝냈다. 짱구아빠가 다음에 할 일은?

스택 은 컵모양 으로 설명한다

컵모양으로 위 예시를 설명하면, 위에서부터 d, c, b, a가 된다

용어 정리

push: 스택에 값을 넣는 것

pop: 스택의 가장 위의 값을 제거

top: 스택 가장 위에 있는 값을 출력

사용 예시

인터넷 브라우저

인터넷 브라우저의 뒤로 가기, 앞으로 가기 기능은

스택을 이용해서 구현할 수 있다

역순 문자열 만들기

문자열을 스택에 순서대로 집어넣으면

스택은 거꾸로 값을 꺼내준다

Java의 Stack

Java의 util에서 Stack 클래스를 지원한다

import java.util.Stack; //임포트 해준다 public class Main { static int[] arr; public static void main(String[] args){ Stack stack= new Stack(); //스택 클래스를 가져온다, 자료형은 Character, String 등 다양하게 가능 }}

스택을 가져오면 보이진 않지만

스택이 생성되어 있다

내부 메소드를 사용해 스택을 활용할 수 있다

Java Stack 내부 메소드 .push( input ) input 값을 스택에 넣어준다 .pop(); 맨 위 값을 return하는 동시에 제거한다 .peek(); 맨 위 값을 return한다 .isEmpty(); 스택이 비어있으면 true, 그 외는 false .size(); 스택이 가지고 있는 원소 개수를 보여준다

주의점

스택이 비어있을 때 .pop()과 .peek()를 사용하면

Exception 오류가 발생한다

*오류가 발생하지 않도록

스택의 크기가 0이 아닐 때만

pop과 peek를 실행해야한다

*stack 관련 문제를 풀어보며 익숙해지는 것을 추천!

from http://devyoseph.tistory.com/93 by ccl(A) rewrite - 2021-10-22 03:28:10