sw/알고리즘

백준 5613 계산기 프로그램

넉넉- 2022. 11. 14. 01:12

오답노트

  • 입력된 문자열을 int로 형변환을 try해서 성공/실패 경우로 나누어 처리하였음. 하지만 무조건 숫자 한 번, 연산자 한 번 이런 순서가 고정되어 input 된다는 것을 알면 굳이 try-except 을 쓰지 않아도 더 간결한 코드로 풀이가 가능하다. 

궁금한 내용

  • 형변환 오류에 대한 except message 는 무엇인가? (이걸 알면 초기 답안대로 했을 때 다른 오류는 받지 않도록 할 수 있음)

흐름

  • 생략

코드(초기 답안)

import collections
que = collections.deque()     
x = input()
result = int(x)

while x != '=':
    try:
        num = int(x)
    except: #연산자일 경우 q에 저장
        que.append(x)
        x = input()
        continue
    
    if que:
        op = que.pop()
        if op == '+':
            result += num 
        elif op == '-':
            result -= num 
        elif op == '*':
            result *= num 
        elif op == '/':
            result //= num    
        
    x = input()
    
print(result)

 

코드(수정 답안)

result = int(input())
op = input()
while op != '=':
    num= int(input())
    if op == '+':
        result += num 
    elif op == '-':
        result -= num 
    elif op == '*':
        result *= num 
    elif op == '/':
        result //= num   
    op = input()
    
print(result)