문제 출처
1. 문제설명
2. 알고리즘 설계
- 문제를 보자마자 스택을 이용해야 된다는 생각이 들었다.
- 규칙을 조금 생각해보면, 문자는 그냥 출력하면 된다.
- 연산자 우선순위를 잘 고려해보자
- 우선순위 : 괄호 -> 곱셈/나눗셈 -> 덧셈/뺄셈
- 괄호
- 여는 괄호 : 스택에 그냥 넣는다.
- 닫는 괄호 : 스택의 top이 여는 괄호가 될 때까지 스택 원소를 꺼내 출력한다.
- 곱셈/나눗셈
- 스택의 top이 곱셈 또는 나눗셈이 될 때까지 스택 원소를 꺼내 출력한다.
- 덧셈/뺄셈
- 이 부분이 조금 헷갈릴 수 있겠다.
- 기본적으로 우선순위가 가장 뒤지만, 괄호 안에 있다면 우선 되어야 한다.
- 스택의 top이 여는 괄호가 될 때까지 스택 원소를 꺼내 출력한다.
- 이제 스택에 남은 걸 전부 출력해주면 된다.
3. 전체 코드