참고
- 후위 표기식
괄호가 없는 경우, 아래의 순서대로 연산하면 중위 표기식을 직접 계산할 수 있다.
1. 숫자를 만나면 현재 숫자(cur)를 저장해둔다.
2. +, - 연산자가 나오면 temp에 현재의 숫자를 곱한다. (temp는 1로 초기화)
3. 그리고 result에 temp를 더한다.
4. *, / 가 나오면 temp에 값을 누적한다.
5. 이후 +, - 연산자가 나오면 2 ~ 3을 실행한다.
6. 모두 종료 후 남은 연산 실행
아래의 식으로 중위 표기식을 연산해보자.
operator는 *나 /를 만난 후 저장할 연산자이며, 초기화는 * 로 한다.
temp는 1로 초기화하고 - 를 만나게 되면 -1로 초기화한다.
첫 숫자 a를 cur에 저장한다.
+ 를 만났다. temp에 현재 숫자를 곱하고 result에 누적해서 더한다.
+ 를 만났기 때문에 temp는 1로 초기화된다.
이제 현재 숫자는 b다.
- 를 만났으므로 temp에 현재 숫자를 곱한 후 result에 누적한다.
- 를 만났기 때문에 temp는 -1로 초기화된다.
현재 숫자를 c로 갱신한다.
* 를 만났으므로 temp에 계속 누적한다.
operator가 * 이므로 temp에 현재 값을 곱한다.
그리고 operator를 현재 연산자 *로 갱신한다.
현재 숫자는 d.
/ 를 만났다.
/ 를 만났다고 해서 나누는 것은 아니다.
operator에는 *가 있고 이 값을 temp에 다시 갱신한다.
그리고 operator를 / 로 바꾼다.
현재 숫자는 e.
-를 만났으므로 temp에 cur을 operator대로 연산하고 result에 갱신한다.
result 갱신 후에는 operator를 *로 초기화한다.
이후 연산은 그림을 참고하자.
for문이 종료되었지만 연산은 아직 남았다.
남은 연산은 for문 바깥에서 실행한다.
구현은 괄호를 포함한 중위 표기식 연산하기를 참고하자.
'알고리즘 > [EXP] 삼성 SW 역량 테스트 C형' 카테고리의 다른 글
더블 링크드 리스트 구현 (Double Linked List) (0) | 2023.07.30 |
---|---|
BOJ 10757 : 큰 수 A+B with 10^N진법 (0) | 2023.07.29 |
BOJ 15688 : 수 정렬하기 5 with In-Place Sort (0) | 2023.07.29 |
괄호가 있는 중위 표기식 연산하기 (0) | 2023.07.29 |
포인터의 크기 (Size of Pointer) - 삼성 SW 역량 시험 환경 (0) | 2021.03.20 |
댓글