320x100
Stack 사용
그냥 짝맞는거 찾아서 하나하나 제거하는 식으로 풀었었는데
정확성은 100%이지만 효율성에서 다 틀렸다.
찾아보니 Stack으로 푸는 방법이 있다해서 알게 되었다.
다행히 학교다닐 때 배운 개념과 코드가 거의 유사해서 이해하는데는 어려움이 없었다.
선입선출(FIFO)
데이터 추가 : push
데이터 꺼내기 : pop (제일 나중에 추가한 것부터 꺼냄)
코드
Stack<String> stack = new Stack<>();
// Stack에 데이터 추가
stack.push("A");
stack.push("B");
stack.push("C");
// Stack에서 데이터 꺼내기
System.out.println(stack.pop());
// ==> C
// Stack의 최상단 값 출력(제거하지 않음)
System.out.println(stack.peek());
// ==> B
// Stack에서 데이터 꺼내기
System.out.println(stack.pop());
// ==> B
System.out.println(stack.pop());
// ==> A
stack.pop();
// ==> EmptyStackException
A, B, C를 push하고
두번 pop한 결과
Stack에는 A만 남아있다.
여기서 pop()을 두 번 실행하면, 즉 Stack을 비운 상태에서 또 pop()을 실행하면

EmptyStackException 예외가 발생한다.
- List 처럼 한 가지 자료형의 데이터만 추가할 수 있다.
- push() : 데이터 추가
- pop() : 데이터 추출
- peek() : 제일 상단 데이터 리턴( 실제 데이터가 추출되진 않는다.)
- size() : Stack 사이즈 리턴
- empty() : Stack이 빈 상태인지 알 수 있음
- contains() : 특정 데이터가 포함되어 있는지 알 수 있음
- clear() : Stack 비우기
320x100
'Programming Language > JAVA' 카테고리의 다른 글
[JAVA] Optional- of 와 ofNullable의 차이, orElse와 orElseGet의 차이 (0) | 2023.08.17 |
---|---|
[JAVA] list에 객체 add시 주의할 점 (0) | 2023.08.03 |
[JAVA] java.sql.Date vs java.util.Date (0) | 2023.03.23 |
[JAVA] transient 키워드 (0) | 2022.11.05 |