문제

 

풀이 코드

let inputs = readLine()!
var stack = ""
var answer = ""

for op in inputs {
    switch op {
    case "(":
        stack.append(op)
    case ")":
        while !stack.isEmpty && stack.last != "("{
            answer.append(stack.removeLast())
        }
        stack.removeLast()
    case "*", "/":
        while !stack.isEmpty && (stack.last == "*" || stack.last == "/") {
            answer.append(stack.removeLast())
        }
        stack.append(op)
    case "+", "-":
        while !stack.isEmpty && stack.last != "(" {
            answer.append(stack.removeLast())
        }
        stack.append(op)
    default:
        answer.append(op)
    }
}

while !stack.isEmpty {
    answer.append(stack.removeLast())
}
print(answer)

 

풀이 과정

스택을 이용하여 풀이 하였다.

괄호를 만나면 일단 스택에 넣어주고, 닫는 괄호가 나왔을때, 우선순위가 모두 종료된 의미이기 때문에 스택에 있는 연산자를 모두 꺼내 주었고,

곱셈 이나 나눗셈을 만나면 곱셈 나눗셈까지 모두 꺼내 주고, 

덧셈이나 뺄셈이 나오면 괄호 를 만날때 까지 꺼내주었다.

+ Recent posts