ABOUT ME

woongS, iOS, succesS 삼쓰의 개발 블로그

Today
Yesterday
Total
  • 백준 1981 후위 표기식
    Algorithm/BOJ 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())

     

    배운점

    'Algorithm > BOJ' 카테고리의 다른 글

    백준 14719 빗물  (0) 2021.05.02
    백준 1922 네트워크 연결  (0) 2021.04.30
    백준 2493 탑  (0) 2021.04.22
    백준 1958 LCS 3  (0) 2021.04.22
    백준 11049 행렬 곱셈 순서  (0) 2021.04.21

    댓글

Designed by Tistory.