스택을 구현하여 간단하게 큰 수 계산이를 구현할 수 있다.
스택을 다음과 같이 구현한다.
int stack[100000];
int top = -1;
void push(char data){
stack[++top] = data;
}
void pop(void){
top--;
}
다음과 같은 구조에서 char 형 300과 20을 2개의 배열에 push 하면
다음과 같은 2개의 스택이 구현된다.
여기서 중요한 것은 자리수가 다른 것이 입력되더라도 스택을 pop하는 과정에서 자리수가 자연히 일치한다는 것을 확인할 수 있다. 즉 pop을 할 때마다 연산을 하면 정확하고 간결하게 계산을 할 수 있게 된다는 의미이다. pop을 하여 데이터를 더할 때 10이 넘으면 다음 pop 되는 것을 +1을 처리해주고, 뺄 때 마이너스가 되면 다음 pop 되는 것을 -1을 처리해주는 방식이다. 위와 같은 자리는 100000 배열이므로 100000 자리를 시스템 상에서 쉽게 연산을 하고 표현할 수 있다.
이러한 연산의 단위는 단지 순차적인 pop이기 때문에 O(n)에서 해결할 수 있다.
'알고리즘' 카테고리의 다른 글
| 정렬 (0) | 2016.05.13 |
|---|---|
| 소수 더하기 O(n) 최적화 (0) | 2015.10.30 |
| 퀵 정렬(Quick Sort) (0) | 2015.10.30 |
| 합병 정렬(Merge Sort) (0) | 2015.10.30 |
| 삽입 정렬(Insert Sort) (0) | 2015.10.30 |


