티스토리 뷰
반응형
🔷 후위표기법 변환 완전 정복: 원리부터 도식 예제까지
✅ 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. 전체 알고리즘 요약
- 왼쪽부터 한 글자씩 읽음
- 피연산자: 바로 출력
- 연산자: 스택을 이용해 우선순위 판단 후 push/pop
- 괄호:
(
은 push,)
은(
나올 때까지 pop - 수식이 끝나면 스택의 모든 연산자 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: (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. 후위표기법 변환 핵심 요약표
🔹 전체 변환 알고리즘 (문장 요약)
- 수식을 왼쪽에서 오른쪽으로 한 글자씩 읽습니다.
- 피연산자는 바로 출력합니다.
- 연산자는 스택 top과 우선순위 비교 후 push/pop 결정합니다.
- 괄호는
(
는 push,)
는(
까지 pop합니다. - 수식이 끝나면 스택을 모두 비웁니다.
반응형
'자격증 > 정보처리기사' 카테고리의 다른 글
정보보안, Salt란? (0) | 2025.05.06 |
---|---|
BCNF (Boyce-Codd Normal Form) 정규란? (0) | 2025.05.05 |
관계 대수(Relational Algebra)란? (0) | 2025.05.05 |
로킹(Locking) 단위란? (0) | 2025.05.05 |
형상 관리(Configuration Management)란? (0) | 2025.05.04 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 사회심리학
- stl
- 여인권
- 인프런
- 티스토리챌린지
- K-MOOC
- c++
- 열혈프로그래밍
- 일문따
- 류근관
- 심리학
- 데이터분석
- 백준
- 코딩테스트
- C/C++
- Python
- 정보처리기사
- 보세사
- 일본어문법무작정따라하기
- 인지부조화
- 회계
- 통계
- 통계학
- C
- 일본어
- 오블완
- 윤성우
- 파이썬
- 강화학습
- 뇌와행동의기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함