후위식이 있을때 계산방법은
3 5 2 + * 9 - 라고하면
3 [5+2] * 9 -
[3 * 7] 9 -
21 -9 = 12다
앞에서부터 하나씩 탐색하다가
연산자를 만나면 연산자의 피연산자 앞에있는 두 숫자중
앞에 숫자에서 뒤의 숫자를 빼면 된다
스택에서는 먼저 들어간 숫자가 피연산자가 된다
식을 계산하며 원소를 줄여나가면 답이 나온다
여기서도 숫자인지 연산자인지를 구분하며
리스트의 길이만큼 for 문을 돌면 된다
3 5 2 + * 9 -
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
1회 3
숫자니까 리스트에 더한다
tmp 3
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
2회 5
숫자니까 리스트에 더한다
tmp 3 5
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
3회 2
숫자니까 리스트에 더한다
tmp 3 5 2
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
4회 +
연산자를 만났으니까
앞에 두 피연산자로 연산한뒤 스택에 다시 넣는다
5+2 = 7
tmp 3 7
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
5회 *
연산자를 만났으니까
앞에 두 피연산자로 연산한뒤 스택에 다시 넣는다
3 * 7 = 21
tmp 21
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
6회 9
숫자니까 리스트에 더한다
tmp 21 9
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
7회 -
연산자를 만났으니까
앞에 두 피연산자로 연산한뒤 스택에 다시 넣는다
21 - 9
tmp 12
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
statck[0]을 출력한다
댓글 0