수식 표기법

SeungJoo
|2024. 2. 26. 23:38
728x90

수식 표기법

수식을 표현하는 방법으로 중위, 전위, 후위법이 널리 사용됩니다. 이러한 표기법들은 계산기를 포함한 컴퓨터 프로그램에서 수식을 표현하고 계산하는 데 사용됩니다. 각각의 표기법은 스택을 사용하여 계산을 수행할 때 유용합니다. 수식 표기법을 사용하는 이유는 연산자의 우선순위를 명확하게 할 수 있고, 복잡한 수식을 간단하고 명료하게 표현하기 위함입니다. 특히 전위나 후위 표기법을 사용하면 괄호를 사용하지 않아도 연산자의 우선순위를 명확히 파악할 수 있습니다.

중위 전위 후위
1+3*5 +1*35 135*+
a*b+8 +8*ab ab*8+
(2+2)+9 +9+22 22+9+

전위 표기법

수식에서 연산자가 피연산자 앞에 위치하는 표기법이며 이 표기법에는 연산자가 피연산자들의 앞에 오기 때문에 피연산자들의 순서나 연산의 우선순위를 명확하게 알 수 있습니다.

전위표기법에서는 괄호를 사용하여 연산의 범위를 명시할 수 있습니다. 괄호 안의 연산은 일반적인 연산자 우선순위 규칙에 따라 계산됩니다. 괄호를 사용하여 연산자 우선순위를 변경할 수 있고, 특히 스택을 활용하여 계산을 수행할 때 효과적이며 스택을 이용하여 전위 표기법으로 표현된 수식을 계산하는 알고리즘은 일반적으로 연산자를 만나면 피연산자들을 저장하고, 연산자를 만날 때마다 스택에 필요한 피연산자들을 꺼내 개산 후 스택에 저장하는 방식으로 동작하게 됩니다.

중위 표기법

중위 표기법에서의 괄호는 연산의 우선순위를 명확히 하기 위해서 사용됩니다. 일반적으로 연산자 우선순위에 따라 연산의 순서가 결정되면 괄호를 사용하여 우선순위를 변경하거나 특정 부분의 연산을 먼저 수행 가능합니다.

예를 들어보면 3+4*7의 경우에는 곱셈 연산자가 덧셈 연산자보다 우선순위가 높기 때문에 곱셈이 먼저 이루어지게 되며 수식의 연산결과는 31이 됩니다.

하지만 우리가 덧셈을 먼저 하고 싶다면 괄호를 사용하여 연산의 우선순위를 변경할 수 있습니다. 예를 들어 (3+4)*7과 같이 표현하면 괄호 안의 연산이 수행되기 때문에 덧셈이 먼저 이루어지고 그 후에 곱셈이 이루어집니다. 이 경우에는 연산결과가 49가 됩니다.

중위 표기법을 전위 표기법 변환

3+2+4*5+3/1

수식을 왼쪽에서 오른쪽으로 읽어가면서 연산을 수행할 수 있습니다. 가장 바깥쪽에 있는 연산자부터 계산을 시작하여, 해당 연산자의 피연산자들을 계산하고 결과를 구하며 내부 연산자를 계산하여 전체 수식을 계산하게 됩니다.

1. 연산자 우선순위에 맞게 괄호를 추가합니다.

((3 + (2 + (4 * 5))) + (3 / 1))

2. 괄호 안에 있는 연산자를 앞으로 이동시킵니다.

+ (+ 3 (+ 2 * 4 5) (/ 3 1))

3. 괄호 제거 후 결과를 전위 표기법으로 표시

+ + 3 + 2 * 4 5 / 3 1

중위 표기법을 후위 표기법 변환

1. 연산자 우선순위에 맞게 괄호를 추가합니다.

((8 * 3) + 2) - (5 / 1)

2. 괄호 안에 있는 연산자를 뒤로 이동

1. (8 * 3) --> 스택: ( * ), 결과: (8 3 *)
2. ((8 * 3) + 2) --> 스택: ( + ), 결과: (8 3 * 2 + )
3. (5 / 1) --> 스택: ( + ), 결과: (8 3 * 2 + 5 1 / )
4. ((8 * 3) + 2) - (5 / 1) --> 스택: (비어있음), 결과: (8 3 * 2 + 5 1 / -)

3. 괄호 제거 후 결과 표시

8 3 * 2 + 5 1 / -

728x90

'알고리즘' 카테고리의 다른 글

Queue?  (0) 2024.04.12
탐욕법  (0) 2024.02.22
해시법  (0) 2024.02.20