본문 바로가기
알고리즘/[EXP] 삼성 SW 역량 테스트 C형

중위 표기식 직접 연산하기

by 피로물든딸기 2023. 7. 29.
반응형

삼성 C형 전체 링크

 

참고

- 후위 표기식

- 괄호가 있는 중위 표기식 연산하기

 

괄호가 없는 경우, 아래의 순서대로 연산하면 중위 표기식을 직접 계산할 수 있다.

 

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문 바깥에서 실행한다.

 

구현은 괄호를 포함한 중위 표기식 연산하기를 참고하자.

반응형

댓글