아이딕
아이딕 IT블로그
아이딕
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Algorithm (9)
      • BackJoon (0)
      • Programmers (5)
      • Data Structure (4)
    • Java (5)
    • Spring (1)
    • SQL (2)
      • MSSQL (1)
    • JavaScript (7)
    • React (3)
    • HTML (0)
    • CSS (1)
    • Build Tool (0)
      • Gradle (0)
      • Maven (0)
    • Tomcat (1)
    • Git (2)
    • IDE (3)
    • Error Log (1)
    • 개발 지식 (9)
    • 도서 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩테스트
  • programmers
  • 프로그래머스
  • 호이스팅
  • 변수호이스팅
  • JVM
  • 자바스크립트
  • 자료구조
  • GitHub
  • ES6
  • 자바
  • 깃허브
  • 블록레벨스코프
  • IntelliJ
  • springboot
  • java Data Structure
  • Java 문자열 처리 최적화
  • Java
  • 알고리즘
  • 인텔리제이
  • VSCode
  • Git
  • 스코프
  • react
  • 자바자료구조
  • codingTest
  • 리액트
  • Algorithm
  • JavaScript
  • 함수레벨스코프

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아이딕

아이딕 IT블로그

Algorithm/Data Structure

[Data Structure] 스택(Stack)이란?

2023. 1. 10. 09:40
728x90
반응형

1. 스택(Stack)의 개념

스택(Stack)은 "쌓다"라는 의미로 데이터를 하나씩 쌓아 올린 형태의 자료구조로, 한쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료 구조이다.

 

스택(Stack) 자료구조를 쉽게 예를 들어보자면, 박스 쌓기를 생각하면 된다.

박스를 아래에서 하나씩 쌓고, 박스를 뺄 때는 마지막에 쌓은 박스부터 다시 순서대로 박스를 빼야 한다는 점을 생각하면 쉽다.

 

2. 자바(Java) 라이브러리 스택(Stack) 관련 메서드

- pop() : 스택(Stack)의 가장 윗부분에 있는 자료를 제거한다.

- push(item) : 스택(Stack)의 가장 윗부분에 item을 추가한다.

- peek() : 스택(Stack) 가장 윗 부분에 있는 데이터를 반환한다.

- search(item) : 스택(Stack)에서 item이 있는 인덱스 위치를 반환한다.

- sEmpty(): 스택이 비어 있을 때에 true를 반환한다.

3. 스택(Stack)에서의 오버플로우(Overflow)와 언더플로우(Underflow)

- 오버플로우(Overflow) : 스택(Stack)의 크기만큼 데이터가 꽉 차서 데이터를 넣지 못할 때 발생한다.

- 언더플로우(Underflow) : 스택(Stack)이 비어 있는 상황에서 데이터를 꺼내려고 할 경우에 발생한다.

 

4. 스택(Stack) 구현

import java.util.*

public class Main{
	public static void main(String[] args){
		Stack<Intger> s = new Stack<>(); //int형 스택(Stack) 선언
		
		s.push(5); // 스택(Stack)에 5 추가
		s.push(2); // 스택(Stack)에 2 추가
		s.push(3); // 스택(Stack)에 3 추가
		s.push(7); // 스택(Stack)에 7 추가
		s.pop();   // 스택(Stack)에 가장 마지막에 추가된 7 제거
		s.push(1); // 스택(Stack)에 1 추가
		s.push(4); // 스택(Stack)에 4 추가
		s.pop();   // 스택(Stack)에 가장 마지막에 추가된 4 제거
		
		while(!s.empty()){//스택의 최상단 원소부터 출력
			System.out.print(s.peek() + " ");
			s.pop();
		}
	}
}

//실행 결과 ==> 1 3 2 5

 

5. 스택(Stack) 사용 사례

(1) 웹 브라우저 방문기록 (뒤로가기)

(2) 실핼 취소(undo)

(3) 역순 문자열 만들기

(4) 후위 표기법 계산

(5) 재귀 알고리즘

728x90
반응형

'Algorithm > Data Structure' 카테고리의 다른 글

[Data Structure] 우선순위 큐(Priority Queue)란?  (34) 2023.01.18
[Data Structure] 큐(Queue)란?  (45) 2023.01.16
[Data Structure] 스택(Stack) 사용 예제 (웹 방문 기록)  (33) 2023.01.12
    'Algorithm/Data Structure' 카테고리의 다른 글
    • [Data Structure] 우선순위 큐(Priority Queue)란?
    • [Data Structure] 큐(Queue)란?
    • [Data Structure] 스택(Stack) 사용 예제 (웹 방문 기록)
    아이딕
    아이딕
    IT, 개발, 공부, 정리, 기타

    티스토리툴바