728x90
300x250
출처 : https://todaycode.tistory.com/73
(1) 중위 표기법 -> 후위 표기법
1. 숫자는 그대로 출력
2. 연산이 나오면 스택에 넣기
2-1. 스택이 비어있다면 나온 바로 스택에 넣는다.
2-2. 스택의 top(peek)에 있는 연산자의 우선순위 < 현재 연산자 우선순위 라면 스택에 넣는다.
2-3. 현재 연산자의 우선순위가 더 작거나 같다면 스택이 비거나 , 현재 연산자 우선순위가 더 커질때까지 pop하여 연산을 출력한다. 그리고 현재 연산자를 스택에 넣는다.
3. 수식이 끝났다면 스택이 빌때까지 pop하여 출력
**우선순위는 (더하기=빼기) < (곱하기=나누기)이다.
-- 괄호가 나온다면?
4. 여는 괄호는 스택에 그냥 추가한다.
5. 여는 괄호 다음에 오는 연산자는 그냥 스택에 추가한다.
6. 닫는 괄호는 여는 괄호가 나올 때까지 스택을 pop 하여 출력한다. 다 출력하고 난 뒤 괄호들은 버린다.
Ex. A+B*C-D/E ==> ABC*+DE/-
(2) 후위 표기법 계산 방법
1. 숫자를 스택에 넣는다.
2. 연산자가 나오면 숫자 2개를 pop하여 계산하고 계산한 결과를 다시 스택에 넣는다.
** 먼저 pop되는 숫자가 2번째 값, 나중에 pop되는 숫자가 1번째 값이다.
Ex. AB- ==> A-B
728x90
'알고리즘 > 스택' 카테고리의 다른 글
백준 17413번: 단어 뒤집기2 [스택][Stack]- Java (0) | 2023.12.19 |
---|---|
백준 1874번: 스택 수열 [스택][Stack] -Java (0) | 2023.12.11 |
백준 5397번: 키로거 [스택][Stack][덱][Deque][자료구조]- Java (0) | 2023.12.11 |
백준 10799번: 쇠막대기 [스택][Stack][누적합] -Java (1) | 2023.12.06 |
백준 4949번: 균형잡힌 세상[Stack][스택] -Java, 반례 (1) | 2023.12.05 |