자바스크립트로 스택을 구현해보고 느낀 점

안희수·2021년 4월 21일
0

자료구조에서 스택은 후위(Postfix) 형식으로 처리를 하는데
구현해보면서 겪은 문제점이 몇가지 있어 정리하고자 한다

먼저 계산에서 우선순위를 가지는 괄호가 복수이상 존재하는 경우에는
저 로직이 제대로 동작하지 않는다

Case 1 : (2+3) * (4-2)
Case 2 : ((2+3) 7 - 2) (4-2)

이유는 산술부호는 후위로 몰아서 스택에 쌓는 구조가 스택인데
괄호가 여럿 존재하고 있을 경우 닫는 괄호를 찾기가 애매한 상황이기
때문이다

앞에서 훑어 가면서 닫는 괄호를 찾을 때
괄호안에 괄호가 있을 경우가 처리하기 힘들고 (Case2)

괄호를 만나는 순간 맨 뒤에 문자열에서 괄호를 훑어갈 경우
별개 괄호가 두개 존재하는 경우(Case1) 에서 문제가 생긴다

특히 Case1의 경우 괄호와 괄호 사이에 아무 계산 없이
괄호의 결과 두가지만 가지고 계산을 해야 하므로
프로그램 상으로 스택을 정확하게 구현하려면 스택을 하나 더 가져가야 한다

때문에 괄호를 만나면 괄호안에 있는 내용을 해석해
괄호의 값을 먼저 스택에서 처리 후 괄호 밖에 차등 순위 내용을
하나씩 스택에 집어넣고 내 보내면서 처리하고자 하였다

두번째로 문자열을 이용한 것이기 때문에
이론적인 개념으로는 숫자 하나씩 스택에 집어넣는 구조이지만
구현을 할 때는 문자열 하나로 처리하려 할 경우 10의 자리 100의 자리를
가지고 있는 값은 문자열 하나로 읽으려 하면 문제가 있어
산술 부호를 한가지 기호로 통일 시킨 뒤 Split 처리로
10의자리 숫자 100의자리 숫자가 1자리로 처리되는 것을 막았지만

스택의 개념에서는 조금 많이 벗어났다
스택은 말했다시피 후위로 몰아버리는 것이므로
엄밀히는 순수하게 스택이 구현되었다고 보기는 힘들 것 같다

나중에 좀 요령이 생기면 제대로 스택과 큐를 구현해 보아야 겠다

profile
9년차 소프트웨어 개발자 (2024년 재 개편 예정입니다)

0개의 댓글

관련 채용 정보