Stack은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO)으로 되어 있다.
자료를 넣는 것을 '밀어넣는다' 하여 푸쉬(push)라고 하고,
반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 하는데,
이때 꺼내지는 자료는 가장 최근에 푸쉬한 자료부터 나오게 된다.
1.push() = 스택에 데이터 추가
2.pop() = 마지막으로 삽입된 스택 제거 및 반환
3.peek() = 스택의 마지막 요소를 반환, 스택에는 변화X
4.empty() = 스택이 비어있는지 여부 반환
5.search() = 검색하여 해당 위치 반환. 만약 해당 인자 여러 개일 경우, 마지막 위치 반환. 위치는 인덱스가 아닌 빠져나오는 순서. 찾는 값이 스택에 없을 경우 -1 반환
'(' 부호가 들어올 경우 push(), ')' 부호가 들어오면 isEmpty()로 체크 후 비어있지 않다면, '(' pop()
String s = "((())(())";
Stack<Character> st = new Stack<>();
for (int i =0; i < s.length(); i++){
if (s.charAt(i) == '(') st.push(s.charAt(i));
else{
if (st.isEmpty()) {
return false;
}
st.pop();
}
}
if (st.isEmpty()) return true;
else return false;