문제
필요 지식
- stack
- 예전에 문자열 연산자 구현할 때 stack쓴게 기억나서 적용해봄.
- 숫자를 만나면 임시 저장소에 저장했다가 연산자 만나면 스택에 저장
- 이 문제의 경우, 연산자는 아니고, SDT만나면 스택에 저장되는 구조
해결 방법
크게 세 부분으로 나눌 수 있다.
[숫자 / SDT / *#]
숫자를 만나면 임시저장소에 저장한 후,
SDT를 만날 때 S는1제곱, D는2제곱, T는3제곱 해서 stack에 넣는다.
그 후, 만약 */#을 만난경우 stack에 있는 값을 꺼내서 다시 연산 시킨 후 다시 넣는다.
주의할 점
- * 를 만났을 때, stack에 1개의 요소만 있는 경우도 생각해야 한다.
코드
반성할 점
- 굳이 스택을 쓸 필요가 없었다는 점
- 스택이용 안하고, 그냥 (숫자 배열, 연산자 배열) 두개 사용하면 코드 길이도 작아지고, 시간도 빠를 듯함. 다음에 해보자!
0 댓글