반응형
https://www.acmicpc.net/problem/1918
소스코드
풀이
★ 주어진 문자열을 돌면서 해당 문자가 알파벳이면 ans에 그대로 추가해주고, 연산자일 경우 else문으로 가게 됩니다.
★ 해당 연산자가 '('일 경우 따로 stack에서 pop할 것이 없기 때문에 stack에 추가해줍니다.
★ 해당 연산자가 '+' 혹은 '-'일 경우에는 우선순위가 가장 낮은 연산자이기 때문에 stack이 비어있지 않고, 괄호를 만날 때까지 stack안에 들어있는 연산자 전부를 pop하여 ans에 더해준 뒤, 자기 자신을 stack에 추가합니다.
★ 해당 연산자가 '*' 혹은 '/'일 경우에는 stack이 비어있지 않고, stack 안에 자기 자신보다 연산자 우선순위가 낮은 연산자를 만날 때까지 stack을 pop 해준뒤, 자기 자신을 append 해줍니다.
★ 해당 연산자가 ')'일 경우엔 괄호 안에 있는 연산자 전부를 pop 해준 뒤, 괄호를 시작하는 연산자인 '(' 연산자까지 pop 해줍니다.
★ 마지막으로 stack이 비어있지 않다면 stack 안에 남은 연산자들을 pop하여 추가해줍니다 !
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준 알고리즘] 2493번: 탑 (Python) (1) | 2023.06.02 |
---|---|
[백준 알고리즘] 17298번: 오큰수 (Python) (0) | 2023.06.02 |
[백준 알고리즘] 9093번: 단어 뒤집기 (Python) (0) | 2023.05.02 |
[백준 알고리즘] 10798번: 세로읽기 (Python) (0) | 2023.05.02 |
[백준 알고리즘] 1550번: 16진수 (Python) (0) | 2023.05.02 |