티스토리 뷰

반응형
후위표기법 변환 완전 정복: 원리부터 도식 예제까지

🔷 후위표기법 변환 완전 정복: 원리부터 도식 예제까지




✅ 1. 들어가며

수학 수식은 대부분 우리가 익숙한 중위표기법을 사용합니다.
예를 들어 이런 식이 그렇죠:
A + B * C
이건 사람이 보기엔 자연스럽지만, 컴퓨터는 연산자 우선순위를 따로 판단해야 해서 처리하기 까다롭습니다.
그래서 나온 방식이 후위표기법(Postfix Notation)입니다.

후위표기법에서는 이렇게 씁니다:
A B C * +
이렇게 쓰면 괄호가 없어도 연산 순서가 명확하게 정해지고, 스택이라는 자료구조를 이용해 계산하기 매우 쉬워집니다.

이 글에서는:
  • 후위표기법으로 어떻게 변환하는지
  • 알고리즘의 원리
  • 눈으로 따라가는 도식화 예제
를 중심으로 설명합니다.


✅ 2. 후위표기법 변환 원리 완전 해부

🔹 2-1. 피연산자와 연산자 구분

수식을 왼쪽에서 오른쪽으로 읽으며 아래처럼 처리합니다:
  • 피연산자 (A, B, C 같은 문자 또는 숫자): → 그대로 출력
  • 연산자 (+, -, *, /): → 스택에 잠시 저장했다가 나중에 출력



🔹 2-2. 연산자 우선순위와 스택 처리 규칙

연산자의 우선순위는 다음과 같습니다:
(낮음) +, - < *, / (높음)
스택 처리 규칙:
  • 스택이 비어 있으면 → 연산자 push
  • 스택 top보다 우선순위가 높으면 → push
  • 낮거나 같으면 → pop해서 출력하고, 그다음 push



🔹 2-3. 괄호 처리 방식

  • 여는 괄호 (: 무조건 push
  • 닫는 괄호 ): (가 나올 때까지 pop해서 출력



🔹 2-4. 전체 알고리즘 요약

  1. 왼쪽부터 한 글자씩 읽음
  2. 피연산자: 바로 출력
  3. 연산자: 스택을 이용해 우선순위 판단 후 push/pop
  4. 괄호: (은 push, )( 나올 때까지 pop
  5. 수식이 끝나면 스택의 모든 연산자 pop하여 출력



✅ 3. 도식으로 배우는 변환 예제

모든 예제는 다음 형식으로 보여드립니다:
  • 전체 수식: 항상 상단에 고정
  • 현재 읽는 위치: 화살표로 표시
  • 출력 결과: 지금까지의 후위표기
  • 스택 상태: 위에서 아래로 쌓인 모습



🔹 예제 1: A + B

전체 수식:
A   +   B

1단계: A 읽음

A   +   B
↑
출력: A
스택:
(비어 있음)

2단계: + 읽음

A   +   B
    ↑
출력: A
스택:
+

3단계: B 읽음

A   +   B
        ↑
출력: A B
스택:
+

수식 종료 → 스택 비우기

최종 출력: A B +
스택:
(비어 있음)



🔹 예제 2: A + B * C

전체 수식:
A   +   B   *   C

1단계: A 읽음

A   +   B   *   C
↑
출력: A
스택:
(비어 있음)

2단계: + 읽음

A   +   B   *   C
    ↑
출력: A
스택:
+

3단계: B 읽음

A   +   B   *   C
        ↑
출력: A B
스택:
+

4단계: * 읽음

A   +   B   *   C
            ↑
출력: A B
스택:
*
+

5단계: C 읽음

A   +   B   *   C
                ↑
출력: A B C
스택:
*
+

수식 종료 → 스택 비우기

최종 출력: A B C * +
스택:
(비어 있음)



반응형

 


후위표기법 예제 3~5: 괄호 포함 도식화 완전 설명

✅ 예제 3: (A + B) * C

전체 수식:
(   A   +   B   )   *   C

🔹 1단계: ( 읽음

(   A   +   B   )   *   C
↑
출력:
스택:
(

🔹 2단계: A 읽음

(   A   +   B   )   *   C
    ↑
출력: A
스택:
(

🔹 3단계: + 읽음

(   A   +   B   )   *   C
        ↑
출력: A
스택:
+
(

🔹 4단계: B 읽음

(   A   +   B   )   *   C
            ↑
출력: A B
스택:
+
(

🔹 5단계: ) 읽음

(   A   +   B   )   *   C
                ↑
출력: A B +
스택:
(비어 있음)

🔹 6단계: * 읽음

(   A   +   B   )   *   C
                    ↑
출력: A B +
스택:
*

🔹 7단계: C 읽음

(   A   +   B   )   *   C
                        ↑
출력: A B + C
스택:
*

🔹 종료: 스택 비우기

최종 출력: A B + C *
스택:
(비어 있음)



반응형

 


✅ 예제 4: A + B * (C - D)

전체 수식:
A   +   B   *   (   C   -   D   )

🔹 종료 시 최종 출력

A B C D - * +



✅ 예제 5: A + (B + C) * (D - E) * F

전체 수식:
A   +   (   B   +   C   )   *   (   D   -   E   )   *   F

🔹 최종 출력 결과

A B C + D E - * F * +



반응형

 


후위표기법 변환 핵심 요약표 및 알고리즘

✅ 4. 후위표기법 변환 핵심 요약표

항목 규칙
피연산자 그대로 출력 (예: A, B, C 등)
연산자 스택에 push, 단 우선순위 낮거나 같으면 pop 후 push
우선순위 *, / > +, -
괄호 처리 (는 무조건 push, )가 나오면 (까지 pop 후 출력
결합 법칙 연산자 우선순위가 같으면 왼쪽부터 처리 (왼쪽 결합)
수식 종료 시 스택에 남은 연산자 전부 pop하여 출력

🔹 전체 변환 알고리즘 (문장 요약)

  1. 수식을 왼쪽에서 오른쪽으로 한 글자씩 읽습니다.
  2. 피연산자는 바로 출력합니다.
  3. 연산자는 스택 top과 우선순위 비교 후 push/pop 결정합니다.
  4. 괄호는 (는 push, )(까지 pop합니다.
  5. 수식이 끝나면 스택을 모두 비웁니다.



반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함