
6-1 스택 개념
- 스택(Stack)의 어원: 쌓는다
- 먼저 입력한 데이터를 제일 나중에 꺼낼 수 있는 자료구조
- 먼저 들어간 것이 마지막에 나오는 규칙 = FILO (First In Last Out)
- 마지막에 들어간 것이 첫번째에 나오는 규칙 = LIFO (Last In First Out)
- 스택 삽입 = 푸시(push)
- 스택 꺼내기 = 팝(pop)
스택의 동작 원리 이해하기

6-2 스택의 정의
ADT
- 추상 자료형(Abstract Data Type): 인터페이스만 있고 실제 구현x 자료형
- 자료형의 설계도
스택의 ADT


- top이 0이면 데이터가 1개 있는 것! 초기값이 0이 아니라 -1임에 주의
합격 조언: 자료구조의 세부 동작을 공부하면 큰 도움!
- 자료 구조의 성능 & 특성 이해하기
스택 세부 동작에 대해 조금 더 자세히 알아보기
- push를 호출하면 isFull()로 먼저 차있는지 확인 ⇒ 안 찼으면 top 1 증가 후 데이터 추가
- pop을 호출하면 isEmpty()로 먼저 비어 있는지 확인 ⇒ 안 비어있으면 top 1 빼고 데이터 반환
Stack 클래스 사용하기
- 최근 삽입한 데이터를 대상으로 연산해야 한다? ⇒ 스택 떠올리기
Stack<Integer> stack = new Stack<>(); // 스택 객체 생성
// 스택에 데이터 푸시
stack.push(1);
stack.push(3);
// 스택이 비어 있는지 확인
System.out.println(stack.isEmpty()); // false
// 스택에서 팝
System.out.println(stack.pop()); // 3
System.out.println(stack.pop()); // 1
System.out.println(stack.isEmpty()); // true
자바의 Stack 클래스는 크기를 동적으로 관리하므로 max_size나 isFull()메서드는 없다!!
- size() 메서드는 있어서 스택에 들어 있는 수 알 수 있다.
- 최근 push한 데이터 pop 안하고 값만 보는 peek() 메서드 있다.
Stack<Integer> stack = new Stack<>(); // 스택 객체 생성
// 스택에 데이터 푸시
stack.push(6);
stack.push(5);
// 스택에 가장 최근에 푸시한 값(peek)
System.out.println(stack.peek()); // 5
System.out.println(stack.pop()); // 5
// 스택에 들어 있는 데이터 개수(size)
System.out.println(stack.size()); // 1
stack.push(7);
stack.push(4);
System.out.println(stack.pop()); // 4
System.out.println(stack.pop()); // 7
System.out.println(stack.pop()); // 6
System.out.println(stack.size()); // 0
- 보통 스택을 활용해서 풀 수 있겠다라는 생각을 못해서 못푸는 경우 다반사
💡 스택 관련 문제 많이 풀고 이 문제는 스택을 사용하는 게 좋겠다!!라는 감 익히기!!
Stack 클래스 함수
- push
- pop
- peek
- isEmpty
- size
주의!!!!! isFull(), max_size 없음!! 동적으로 크기 관리되어서!!
해당 글은 다음 책을 참고하여 공부하며 정리한 글입니다.
https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000006973689
코딩 테스트 합격자 되기: 자바 편 | 김희성 | 골든래빗(주)- 교보ebook
자료구조, 알고리즘, 빈출 97 문제로 대비하는 코테 풀 패키지(모의고사, 엄친아 손노트, 온라인 학습 지원 제공) , ★ 빈출문제 97개면 코딩 테스트 합격할 수 있어요! ★ 자료구조, 알고리즘 이론
ebook-product.kyobobook.co.kr