Closed ks2colorworld closed 10 months ago
[x] 1. 개념
*
/
+
-
(
)
token
토큰
피연산자-operand
연산자-operator
2+3
-2+-3
2+3*5
235*+
[x] 2. 구현 (infix -> postfix) : 자연어 작성 커밋 참조 - https://github.com/ks2colorworld/Data-Structures-In-Python/commit/226ae491993494e153068c1f91e2c696a4d66d15
숫자
stack
push
pop
a
top
b
[x] 3. 작동 (postfix > 계산) : 자연어 작성 커밋 참조 - https://github.com/ks2colorworld/Data-Structures-In-Python/commit/dfb1fee2abde3687e2253786055d041ab8ab2772
def calculate_postfix(stack_postfix, show_steps=False): print('postfix : ', stack_postfix) # 피연산자 스택 준비 # 계산완료 결과값 cal_result = 0 # postfix의 첫번째 문자열(토큰이라 부른다)부터 마지막 문자열까지 아래 작업(1)을 반복한다 # 토큰이 피연산자이면 # 피연산자 스택에 push한다 # continue # 토큰이 연산자이면 # (예외 추가) 피연산자가 2개이상 남아 있지 않으면 오류 # 피연산자 스택에서 두번 pop한 후 # 첫번째 pop은 오른쪽 / 두번째 pop은 왼쪽 # 두 피연산자를 연산자로 계산한다 # 계산한 결과값을 피연산자 스택에 push한다 # continue return cal_result
https://www.youtube.com/watch?v=MYk4autDAJ0&list=PLsMufJgu5933ZkBCHS7bQTx0bncjwi4PK&index=10&ab_channel=Chan-SuShin
소숫점 2자리
,
()
[]
{}
[x] 내용 확인
stack.top()
[x] 1. 개념
*
,/
를+
,-
보다 먼저 계산한다.(
는 우선순위가 가장 낮고,)
는 우선순위가 가장 높다.token
토큰
(피연산자-operand
와연산자-operator
)들을 분리한다.*
,/
,+
,-
)가 피연산자 사이에만 존재 (2+3
)+
,-
) (-2+-3
)2+3*5
)235*+
)[x] 2. 구현 (infix -> postfix) : 자연어 작성 커밋 참조 - https://github.com/ks2colorworld/Data-Structures-In-Python/commit/226ae491993494e153068c1f91e2c696a4d66d15
+
,-
,*
,/
,(
,)
,숫자
)들의 왼쪽부터 하나씩 아래의 순서대로 postfix 수식으로 옮겨 간다.stack
을 준비하여 조건에 따라push
,pop
한다. ( #3 )(
라면stack
에push
하고,a
로 돌아간다.)
라면stack
에pop
하여 postfix 수식으로 옮기는 것을 반복한 후a
로 돌아간다. 단,pop
이(
이면 반복을 멈추고a
로 돌아가며,(
와)
는 postfix 수식으로 옮기지 않는다.stack
이 비어있으면push
한 후a
로 돌아간다.stack
이 비어있지 않고,stack
의top
의 우선순위보다 낮으면push
한 후a
로 돌아간다.stack
이 비어있지 않고,stack
의top
의 우선순위보다 높거나 같으면pop
하여 postfix 수식으로 옮긴 후a
로 돌아간다.stack
을 모두pop
하여 postfix 수식으로 옮긴 후b
를 마친다.[x] 3. 작동 (postfix > 계산) : 자연어 작성 커밋 참조 - https://github.com/ks2colorworld/Data-Structures-In-Python/commit/dfb1fee2abde3687e2253786055d041ab8ab2772
https://www.youtube.com/watch?v=MYk4autDAJ0&list=PLsMufJgu5933ZkBCHS7bQTx0bncjwi4PK&index=10&ab_channel=Chan-SuShin