Algorithm/BOJ
백준 1981 후위 표기식
삼쓰 웅쓰
2021. 4. 26. 23:46
728x90
출처: www.acmicpc.net/problem/1918
분류: 스택
접근방식
말 그대로 후위표기식 변환에 관한 문제였습니다.
설명은 따로 포스팅으로 대체하겠습니다 :)
해결방법
var str = readLine()!
var result = ""
var oper = ""
for char in str {
if char == "(" {
oper.append("(")
} else if char == ")" {
while let opr = oper.popLast() {
guard opr != "(" else { break }
result.append(opr)
}
} else if char == "*" || char == "/" {
guard !oper.isEmpty else { oper.append(char); continue }
while let opr = oper.last, (opr == "*" || opr == "/") {
result.append(oper.popLast()!)
}
oper.append(char)
} else if char == "+" || char == "-" {
guard !oper.isEmpty else { oper.append(char); continue }
while let opr = oper.popLast() {
guard opr != "(" else { oper.append(opr); break }
result.append(opr)
}
oper.append(char)
} else {
result.append(char)
}
}
print(result + oper.reversed())