문제
https://www.acmicpc.net/problem/1918
풀이
중위표기식(infix)을 후위표기식(postfix)로 변환하는 문제이다.
연산자의 위치에 따라 표기식의 이름이 달라진다.
전위표기식(prefix) : * A B
중위표기식(infix) : A * B
후위표기식(postfix) : A B *
스택을 이용해서 풀었다.
1. 피연산자일 경우 -> 결과문자열에 추가
2. 연산자일 경우
① '('
- 스택에 넣는다.
② ')'
- 스택의 top이 '(' 일때까지 top값을 결과문자열에 추가 & pop
- '('까지 pop
③ '+' or '-'
- 스택이 비어질때까지 또는 스택의 top이 '(' 일때까지 top값을 결과문자열에 추가 & pop
- 스택에 넣는다.
④ '*' or '/'
- 스택이 비어질때까지 또는 스택의 top이 '+'이거나 '-'일때까지 결과문자열에 추가 & pop
- 스택에 넣는다.
3. 스택에 남아있는 것들을 그대로 결과문자열에 추가한다.
코드
https://www.acmicpc.net/source/12162950
결과
'알고리즘문제풀이' 카테고리의 다른 글
[백준] 2605번: 줄 세우기 (0) | 2019.03.16 |
---|---|
[백준] 1759번: 암호 만들기 (0) | 2019.03.15 |
[백준] 1600번: 말이 되고픈 원숭이 (0) | 2019.03.10 |
[백준] 6593번: 상범 빌딩 (0) | 2019.03.07 |
[백준] 5014번: 스타트링크 (0) | 2019.03.07 |