-
Stack 활용해보기Java/자바의정석 2023. 2. 27. 16:36반응형
Stack활용의 예시
- 수식계산,
- 수식괄호 검사
- 웨드프로세서의 undo/redo
- 웹 브라우저의 앞으로가기/뒤로가기
Queue활용의 예시
- 최근 사용 문서 확인
- 인쇄작업 대기목록
- Buffer
위와같이 활용의 예시들이 있는데 그 외에도 수많은 예들이 있다.
우선 이번에는 수식괄호검사를 활용해보자.
package JavaChap11; import java.util.*; public class Ex11_3 { public static void main(String[] args) { Stack st = new Stack(); String expression = "((3+5)*8-2)"; //args[0]; System.out.println("expression:" + expression); try { for (int i = 0; i < expression.length(); i++) { char ch = expression.charAt(i); //한글자씩 꺼낸다 if (ch == '(') { //여는괄호라면 push st.push(ch + ""); } else if (ch == ')') { //닫는괄호라면 pop st.pop(); } } if (st.isEmpty()) { System.out.println("괄호가 일치합니다."); } else { System.out.println("괄호가 일치하지 않습니다."); } } catch (EmptyStackException e) { System.out.println("괄호가 일치하지 않습니다."); } } }
===============실행결과==================
expression:((3+5)*8-2)
괄호가 일치합니다.
Stack st = new Stack(); String expression = "((3+5)*8-2)";
Stack을 사용하기 위해 객체를 구현한뒤 계산할 수식을 입력한다.
for (int i = 0; i < expression.length(); i++) { char ch = expression.charAt(i); if (ch == '(') { //여는괄호라면 push st.push(ch + ""); } else if (ch == ')') { //닫는괄호라면 pop st.pop(); } }
for문을 사용하여 입력받은 수식의 길이만큼 동작을 수행하는데
( 여는 괄호가 있다면 Stack에 push를 한다. 우리가 입력받은 수식이 ((3+5) * 8 -2) 이기때문에
( ( 이와같이 ( 가 push가 되어지고
) 닫는 괄호가 나온다면 해당 Stack에서 pop 을 시킨다
입력받은 수식에서 ) 닫는괄호가 2개이므로 pop을 시켜 다시 빈배열이 되어진다.
if (st.isEmpty()) { System.out.println("괄호가 일치합니다."); } else { System.out.println("괄호가 일치하지 않습니다."); }
이와같이 Stack이 비어있다면 괄호가 일치함으로 판단
비어있지않다면 괄호의 갯수가 일치하지 않는다는 문구를 노출시켜준다.
try~ catch의 경우
Stack이 비어있는데 pop을 하는 경우 에러가 발생하기 때문에 사용해주었다.
반응형'Java > 자바의정석' 카테고리의 다른 글
자바 Iterator란? (0) 2023.02.27 자바 Queue 활용해보기 (0) 2023.02.27 LinkedList와 ArrayList의 차이 (0) 2023.02.27 Java ArrayList의 개념 및 메서드 (0) 2023.02.27 Java Collection이란? (0) 2023.02.27