백준 5613 계산기 프로그램

문제

덧셈, 뺄셈, 곱셈, 나눗셈을 할 수 있는 계산기 프로그램을 만드시오.

입력
입력의 각 줄에는 숫자와 +, -, , /, =중 하나가 교대로 주어진다. 첫 번째 줄은 수이다. 연산자의 우선 순위는 생각하지 않으며, 입력 순서대로 계산을 하고, =가 주어지면, 그때까지의 결과를 출력한다. 주어지는 수는 10^8 이하의 양의 정수이다. 계산 중 결과는 0 또는 음수가 될 수 있지만, -10^8 ~ 10^8 범위를 넘지는 않는다. 또, 나눗셈에서 소수점은 버린다. 따라서, 100/33 = 99이다.

피제수가 음수일 때 나눗셈을 하는 경우는 입력으로 주어지지 않는다.

출력
첫째 줄에 계산 결과를 출력한다.

예제 입력 1
1

  • 1

예제 출력 1
2

풀이 과정

이전 수를 저장하고 연산 예정이 될 연산자도 저장해둔다.

코드

prev = result = 0
op = ''
while True:
    now = input()
    if now.isdigit():           # 입력이 숫자이면
        if op == '+':           # 이전 연산자가 +이면 더하고 갱신
            prev += int(now)
        elif op == '-':         # 이전 연산자가 -이면 빼고 갱신
            prev -= int(now)
        elif op == '*':         # 이전 연산자가 *이면 곱하고 갱신
            prev *= int(now)
        elif op == '/':         # 이전 연산자가 /이면 나누고 갱신
            prev //= int(now)
        else:                   # 이전 연산자가 없다면 (처음 받는 숫자 입력이면) 그 입력 숫자로 갱신
            prev = int(now)
    else:                       # 입력이 연산자이면
        if now == '=':          # 입력이 연산자 중 =이면 정답은 이전 값이고 탈출
            result = prev
            break
        op = now                # 연산자 갱신
print(result)

백준 5613 계산기 프로그램

좋은 웹페이지 즐겨찾기