본문 바로가기
프로그래밍/자료구조. 개론

표기법. infix, prefix, postfix. 개요와 간단예제.

by K_Coder 2011. 8. 9.

표기법.
infix, prefix, postfix.
infix, prefix, postfix.
infix, prefix, postfix.

표기법. a + b 같은 것을 어떤 방식으로 표기할 것인가에 대한 방법이다.
일반적으로 a + b 에서 + 를 연산자. a,b는 피연산자 라고 한다.
우리야 당연히 a + b 라고 하겠지만, 이런 방식에는 3가지 종류가 있다. 

 - infix     : 연산자를 중심으로 양쪽에 피연산자가 위치한다. (우리가 쓰는 방식) [a+b]
 - prefix   : 연산자가 제일 앞에 오고 피연산자가 연달아 위치. [+ab]
 - postfix : 피연사자가 연달아 위치하고 연산자가 제일 뒤 [ab+] 


사실 이 표기법은 크게 뭐 없다.
중요한게 몇가지 있는데, 다른 방식으로 전환할 줄 알아야 하는 것과
전환 시 우선해야 할 것을 잘 생각해야 한다는 것이다.

당연한거지만. 아래 그림에서 가장 우선처리 해야 하는 것은 D+E 이다.
그리고 곱하기 나누기 이렇게 우선순위가 있는데. 평소엔 당연히 잘 하는데
꼭 전환 할 땐 쌩깐다. - -; 이상하다 이게.. 나도 많이 그랬었고, 그런 사람 참 많이 봤다.

infix 기준으로 pre로 전환시. 연산자를 앞으로 빼고 피연산자를 연달아 적는다.
post로 전환시엔 반대로 피연산자를 연달아 쓰고 연산자를 맨 뒤에 적는다.

*, /, 괄호 등이 우선 해야 한다는 걸 잊지 말자.


아래는 우리가 쓰는 Infix 상태이다.



3번째 줄에서 - 보다 / 가 우선이니까 먼저한다. 제발, - 먼저 하는 일이 없기를..

/ +DE 가 조금 이상하게 보일 수 있는데. 이게 표기상 그렇게 되어 있어서 그렇게 보이는 것이지
만약 실제로 계산을 했다면 값 / 값 이나 마찬가지다. D+E를 계산한 값의 자리라고 생각하면 될것이다.

좀 헛갈리거나 어색하다면 (+DE) 라고 괄호를 해주는 것도 좋은 방법이다.
어차피 괄호야 다 하고 마지막엔 안써주거나 지우면 그만이니까.


이번엔 반대. 이거 좀 어색했었는데, prefix가 연산자.피연.피연의 순서이다 보니까
연산자.피연.피연 인 것. 다른말로 하면 바로 옆에 연산자가 붙은 것을 먼저 해주면 되는 것이다.

이렇게 하다보니 +가 /보다 먼저 하게 되었다. 그렇다면 +가 / 보다 먼저 할 수 있는 상황은 단 한가지.
괄호이다. 즉, 이 곳에 괄호가 있었다는 의미가 된다. 마지막에 빼먹지 말자. 완잔 다른 결과가 나오게 되니까;
아니면 미리 괄호를 하는 것도 좋다. 그러면 보기도 편하고 나중에 빼먹는 일도 적을테니까.

1번째 줄에서 /C+ 처럼 연산자 사이에 끼어있다면 당연히 변환이 안될 것이며.
3번째 줄에서 - A * B 도 당연히 - A * 상태라 안된다. 특히 이런부분에서 괄호를 해주는 것이 좋다.
단, 괄호를 사용할 생각이라면. 실제로 괄호가 있는 것(D+E) 과 내가 알아보기 위한 괄호를 구분해서 사용하자.
마지막에 [A*B] 와 [C/D+E] 의 -계산이 조금 어색해 보일 수 있겠지만.

이것도 역시 마찬가지로 실제로는 A*B를 한 값에서 C/D+E를 한 값. 을 빼는 것이다.
모양이 다르다고 헛갈리지 말고 원래 어떻게 계산하는지 생각하면 된다.

그리고 무조건. 한번씩은 해봐야 한다. 
눈으로 보면 알아도 막상 해보면 이상하게 막히는 부분이 생기기도 하고,
잘 이해가 안갔는데 직접 해보면 눈에 보이는 경우가 생긴다.


요놈은 Prefix와 동일하며 단지 연산자를 뒤로 보낼 뿐이다.

우선 순위를 까먹지 말고, 원래 계산이 어떤 순서로 처리 될지 생각하면서 하면 문제 없다.

가능하다면, 내가 다른 사람에게 알려주는 것도 생각해 보자.

어떻게 하면 쉽게 설명할 수 있을지... 그렇게 자꾸 생각하다 보면
분명 이해 했었는데, 뭔가 묘..하게 한번 더 이해가 되는 느낌을 받을 수 있다.


유용한 정보가 되셨다면 아래 손가락 버튼 한번 눌러주세요 ^-^