문자열로 된 계산식이 주어질 때, 스택을 이용하여 이 계산식의 값을 계산할 수 있다.
문자열 수식 계산의 일반적 방법
중위표기법(infix notation)
- 연산자를 피연산자의 가운데 표기하는 방법
예) A+B
후위표기법(postfix notaion)- 연산자를 피연산자 뒤에 표기하는 방법
예) AB+
step1. 중위표기식의 후위표기식 변환 방법1
수식의 각 연산자에 대해서 우선순위에 따라 괄호를 사용하여 다시 표현한다.
각 연산자를 그에 대응하는 오른쪽 괄호의 뒤로 이동시킨다.
괄호를 제거한다.
예) A*B-C/D
1단계 : ((A*B) - (C/D))
2단계 : ((A B)* (C D)/)-
3단계 : AB*CD/-
step1. 중위 표기법에서 후위 표기법으로의 변환 알고리즘 (스택 이용)2
우선 중위 표기법에서 후위 표기법으로 변환한다.
중위 표기법으로 표현된 수식 예
(6+5*(2-8)/2)
수식문자열을 읽어서 피연산자는 바로 출력하고 연산자는 스택에 push하여 수식이 끝나면 스택의 남아있는 연산자를 모두 pop하여 출력하시오. 연산자는 사칙 연산만 사용하시오
예를들어 2 + 3 * 4 / 5 인 수식의 경우
아래 그림과 같이 입구와 출구가 주어진 미로에서 입구부터 출구까지의 경로를 찾는 문제이다.
이동할 수 있는 방향은 4방향으로 제한한다.
미로 찾기 알고리즘
백트래킹과 깊이우선탐색과의 차이
모든 후보를 검사하는가? NO
백트래킹 기법
백트래킹을 이용한 알고리즘은 다음과 같은 절차로 진행된다.
일반 백트래킹 알고리즘