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 |