알고리즘

[백준] 21737. SMUPC 계산기

담쏙 2021. 9. 15. 00:40
728x90

https://www.acmicpc.net/problem/21737

 

21737번: SMUPC 계산기

SMUPC를 기념하기 위해 ALGOS와 DSC Sookmyung에서는 SMUPC의 각 글자로 계산이 이루어지는 계산기를 만들었다. 가은이와 혜민이는 이 계산기와 같은 방식으로 작동하는 프로그램을 만들고자 한다. 가은

www.acmicpc.net

 

isdigit()으로 검사했을 때 숫자일 때와 아닐 때를 먼저 나눠준다.

숫자일 경우, 연산자가 저장되어 있지 않으면 첫번째 피연산자이고 연산자가 저장되어 있다면 두번째 피연산자이다.

연산자 일 경우, 저장된 연산자로 계산을 먼저 해주고 현재 연산자는 일단 저장해둔다. (두 번째 피연산자를 알아야 해당 연산자를 사용할 수 있기 때문이다.)

isC로 연산자로 C로 등장했는지 check를 해주고 출력한다. 수식을 모두 확인했는데도 C 연산자가 등장하지 않았다면 NO OUTPUT을 출력한다.

 

def cal(num1, num2, op):
    if op == 'S':
        return num1 - num2
    elif op == 'M':
        return num1 * num2
    elif op == 'U':
        return num1//num2 if num1 > 0 else - (abs(num1)//num2)
    elif op == 'P':
        return num1 + num2


N = int(input())
formula = input()
answer = ''
temp = ''
opt = ''
isC = False
for c in formula:
    if c.isdigit():
        if opt :
            temp += c
        else :
            answer += c
    else :
        if opt and opt!='C' :
            answer = cal(int(answer), int(temp), opt)
            temp = ''

        if c == 'C':
            isC = True
            print(int(answer), end=' ')
        opt = c

if not isC:
    print('NO OUTPUT')

 

'알고리즘' 카테고리의 다른 글

[SWEA] 1218. 괄호 짝짓기  (0) 2021.09.16
[백준] 19583. 싸이버개강총회  (0) 2021.09.15
[백준] 9536. 여우는 어떻게 울지?  (0) 2021.09.14
[백준] 11507. 카드셋트  (0) 2021.09.13
[SWEA] 미로의 거리  (0) 2021.03.14