정말 감사합니다~~
nansama 님이 쓰신 글 :
: 자료구조 공부하신적이 있다면 계산기를 보통 스택으로 구현 하는걸 알수 있는데요
: 데브피아 김영찬님이 쓰신글이 쉽게 이해가 되실것 같내요
:
: http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=741188&ref=741187
:
:
: 우리가 일반적으로 알고 있는 산술식은 중위 표기식입니다.
:
: 즉, 숫자들 사이에 연산 기호가 들어가죠;;
:
: 그리고 사람은 연산기호를 보고 어느게 우선순위가 높고 낮은지 판단을 하고 거기부터 계산합니다.
:
:
:
: 하지만 컴퓨터는 멍텅구리입니다. 0, 1밖에 모르는 전자제품입니다.
:
: (물론 이런 전자제품에 생명력을 불어 넣어주는거는 프로그래머들의 몫이지만...)
:
: 즉, 컴퓨터는 산술식이 들어오면 어디서부터 계산해야하는지 모릅니다.
:
:
:
: 그래서 일반적으로 후위표기식을 많이 사용합니다.(전위 표기식을 사용하는 경우도 있습니다)
:
:
:
: 간단히 예를 들면
:
:
:
: 3 + 4 * 5 / 10 - 2
:
:
:
: 3 4 5 * 10 / + 2 - 처럼 됩니다.
:
:
:
: 자 이를 계산해 봅시다..
:
: 연산자가 나올때까지 스택에 고히 쑤셔 넣습니다.
:
:
:
: 3 | 4 | 5 |
:
: 5까지 넣고 나니 곱셈 연산자가 나왔습니다
:
: 스택에서 두개 꺼냅니다.
:
: 4 5 꺼내고 곱셈합니다.
:
: 결과값을 다시 스택에 넣어요~
:
: 3 | 20 | 이렇게 있겠죠.. 마찬가지로 계속 진행합니다.
:
: 3 | 20 | 10 |
:
: 나누기 연산자입니다.
:
: 스택에서 두개 꺼내고 연산하고 다시 넣습니다.
:
: 3 | 2 | 가 스택에 들어있습니다.
:
: 다음에 더하기 연산자가 오군요
:
: 스택에서 꺼내고 계산..
:
: 5 | 가 됩니다
:
: 계속 진행
:
: 5 | 2 |
:
: 빼기군요
:
:
:
: 3 |
:
: 스택에는 3이 남고
:
: 더이상 숫자나 연산자가 남아 있지 않군요
:
: 답은 3이 됩니다.
:
:
:
:
:
: 예에서 보셨듯이
:
: 후위 표기식은 숫자를 차례대로 넣다가 연산자를 만나면 제일 마지막에 넣은 두개의 숫자를 꺼내서
:
: 연산을 하고 다시 집어 넣는 방식입니다.
:
: 차례대로 넣다가 제일 마지막에 넣은걸 꺼내는 방식은 LIFO 방식인 스택의 구조에 가깝기 때문입니다.
:
:
:
: 그래서 스택을 많이 사용합니다
:
:
:
: 요시 님이 쓰신 글 :
: : 계산기 프로그램을 만들어봤는데요
: :
: : 2+3 이런식으로 한번 연산하는부분은 계산이 되는데요
: :
: : 2+3+4 처럼 연산 횟수가 늘어날때
: :
: : 프로그램을 어떻게 만들어야될지 밤새 고민해도 모르겠어서 질문드려봐요
: :
: : 답글도 감사하지만 제가 완전 초보라 좀 쉽게 설명해주신다면 더 감사하겠습니다~
|