Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- wil
- 코딩테스트 준비
- cs 공부)준비
- 코딩문제
- 면접(java
- aop
- Grafana
- 99클럽
- Entity
- 개발자 취업
- 코딩공부
- 메서드
- css
- github
- HTML
- Java
- 자바
- GIT
- 정렬 알고리즘(sort algorithm)
- CS
- 이진 탐색(binary search)
- 항해99
- Til
- 프로그래머스
- 자료구조
- ArrayList
- Spring
- 코딩
- 회고
- 배열
Archives
- Today
- Total
hayu's 개발 일지
99클럽 코테 스터디 7일차 TIL + Stack 메서드 본문
학습 키워드
- Stack
공부한 내용
Stack 사용(메서드)
- 자바는 java.util.Stack클래스를 통해 Stack(스택) 동작을 제공하고 있다.
- 일반적으로 스택에 데이터를 추가하는 동작은 push라고 하며 스택에서 데이터를 빼는 동작은 pop이라고 한다.
import java.util.Stack;
Stack 요소 넣기 - push()
Stack<Number> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println(stack);
// 출력 : [1, 2, 3]
Stack 요소 꺼내기 - pop()
- Stack은 나중에 넣은것이 먼저 나오는 LIFO(Last In First Out) 구조이기 때문에 넣은 순서와 반대로 꺼내지게 된다.
System.out.println(stack.pop()); // 3
System.out.println(stack); // [1, 2]
System.out.println(stack.pop()); // 2
System.out.println(stack.pop()); // 1
System.out.println(stack); // []
Stack 최상단 요소 가져오기 - peek()
- 스택에 들어있는 요소들 중, 최상단 값을 확인 만하고 스택에서 제거하고 싶지 않은 경우 peek() 메서드를 호출하면, 스택의 최상단(Top)에 있는 데이터를 확인만하고 스택에서 제거하지 않게 된다.
Stack<Number> stack01 = new Stack<>();
stack01.push(1);
stack01.push(2);
stack01.push(3);
// 마지막에 넣은 값만 확인하고 제거하지는 않는다
System.out.println(stack01.peek()); // 3
System.out.println(stack01); // [1, 2, 3]
Stack 공간 비어있는지 확인 - isEmpty()
- 스택에 데이터가 존재하지 않는 상황에서, pop이나 peek을 하게 되면 EmptyStackException 예외가 발생하게 된다. 그러므로 항상 메서드 호출 시에 스택에 데이터가 존재하는지 확인해야 한다.
Stack<Number> stack2 = new Stack<>();
stack2.push(1);
// 스택이 비어있지 않다면 안전하게 요소를 제거
if(!stack2.isEmpty()){
stack2.pop();
}
Stack 요소 위치 확인 - search()
- 스택에특정 데이터가 존재하는지 확인하기 위해 search() 메서드를 사용할 수 있다. 이는 리스트의 indexOf() 메서드와 비슷하다. 데이터가 존재하면 순서를 반환하고 존재하지 않으면 -1을 반환한다.
Stack<String> stack3 = new Stack<>();
stack3.push("HI");
stack3.push("HELLO");
stack3.push("HAHA");
stack3.push("STUDY");
stack3.push("WOW");
System.out.println(stack3); // [HI, HELLO, HAHA, STUDY, WOW]
// 이때의 인덱스는 배열처럼 0부터 시작하는 기준이 아닌, 몇번째로 꺼내지는지에 대한 인덱스 표시이다.
System.out.println(stack3.search("WOW")); // 1 → 첫번째로 꺼내질 것임
System.out.println(stack3.search("HI")); // 5
Stack 사이즈 - size()
- Stack 클래스는 Vector 클래스를 상속받았다. Vector 클래스는 List 인터페이스를 구현하므로 size() 메서드를 사용할 수 있다.
Stack<Number> stack4 = new Stack<>();
stack4.push(1);
stack4.push(2);
stack4.push(3);
stack4.push(4);
System.out.println(stack4.size()); // 4
회고
발생한 문제
- 저번에 스택에 대한 공부를 했는데 사용 메서드에 대한 공부가 부족하다고 생각했다.
- 코딩 문제를 푸는 중, 스택에 대한 공부와 관련 메서드를 공부하면 좋을 것 같다는 생각을 했다.
해결 방법
- 스택에 대한 메서드를 공부했다.
알게된 내용
- 스택에 대한 메서드들을 알게 되었고, 예시 코드를 정리하여 이해를 할 수 있었다.
참고 자료
- https://ittrue.tistory.com/200
- https://kwin0825.tistory.com/156
'자료구조&알고리즘' 카테고리의 다른 글
99클럽 코테 스터디 9일차 TIL + Queue 메서드 (0) | 2024.05.29 |
---|---|
99클럽 코테 스터디 8일차 TIL + Queue (0) | 2024.05.28 |
99클럽 코테 스터디 6일차 TIL + Stack (0) | 2024.05.26 |
99클럽 코테 스터디 5일차 TIL + Vector VS ArrayList (0) | 2024.05.25 |
99클럽 코테 스터디 3일차 TIL + Vector (0) | 2024.05.23 |