티스토리 뷰
이전 포스팅에서는 스택을 활용해서 중위 표기법을 후위 표기법으로 변환했다.
이 포스팅을 읽기 전에 이전 포스팅일 먼저 읽어보기 바란다.
2019/03/21 - [알고리즘 이론] - [자료구조] 스택으로 후위표기식 구현하기 :: 늦깎이 IT
[후위 표기식 계산하기]
1. 피연산자는 무조건 스택에 저장한다.
2. 연산자를 만나면 스택에서 두 개의 피연산자를 꺼내서 계산을 한다. 단, 여기서 주의할 점은 스택에서 먼저 꺼낸 피연산자가 연산자의 뒤에 위치해야한다.
3. 계산 결과는 다시 스택에 넣는다.
후위표기식을 만들었으면, 계산하는 것은 어렵지 않다.
우선, "3 2 4 x +" 와 같은 후위 표기법이 있다고 가정해보자. 후위 표기식에서는 연산자를 만나면 그 연산자와
앞의 두 개의 피연산자를 계산하는 방식이다.
- 3 2 4 x + : x를 만났으면, 2 x 4를 계산하고 그 값으로 바꿔준다
- 3 8 + : 그 다음 +를 만났으면 3 + 8을 계산하고 그 값으로 바꿔준다.
- 11 : 계산을 마쳤다.
[후위 표기식 계산 소스 코드]
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 32 33 34 35 36 37 38 39 40 41 | import java.util.Stack; public class PostCalculator { public static int calPostfix(String input) { Stack<Integer> stack = new Stack<>(); int len = input.length(); for (int i = 0; i < len; i++) { char op = input.charAt(i); if (op >= '1' && op <= '9') { stack.push(op - '0'); } else { int op2 = stack.pop(); int op1 = stack.pop(); switch (op) { case '+': stack.push(op1 + op2); break; case '-': stack.push(op1 - op2); break; case '*': stack.push(op1 * op2); break; case '/': stack.push(op1 / op2); break; } } } return stack.pop(); } } | cs |
'IT 이론 > 자료구조' 카테고리의 다른 글
[자료구조] 이진탐색트리 :: 늦깍이 IT (0) | 2019.04.30 |
---|---|
[자료구조] 우선순위 큐 (수정) :: 늦깎이 IT (0) | 2019.04.16 |
[자료구조] 스택으로 후위표기식으로 변환하기 :: 늦깎이 IT (3) | 2019.03.21 |
[자료구조] 이진 검색 트리의 이론과 구현 :: 늦깎이 IT (0) | 2019.03.14 |
[자료구조] 이진 트리의 순회 (의사코드, 소스코드 포함) :: 늦깎이 IT (0) | 2019.03.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 삼성
- 14888
- 구현
- BFS
- 리스트
- 최대힙
- 연산자 끼워넣기
- 자바
- 배열
- 힙정렬
- 백준
- 큐
- 시뮬레이션
- SWEA
- 브루트포스
- DFS
- 탐색
- 알고스팟
- 구슬 탈출2
- 최소힙
- 우선순위 큐
- 정렬
- 알고리즘
- 힙
- 나무 재테크
- 탈주범 검거
- 영역 구하기
- 트리
- 중간값
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함