Python/알고리즘

[파이썬] 16503 괄호 없는 사칙연산

vss121 2022. 7. 2. 13:13

고민:

연산하는 부분을 어떻게 처리할지? 일일이 경우의 수를 나열하기에는 코드가 길다

-> calculate 함수를 이용해서 처리하였다

 

교훈:

1. 나눗셈 처리

"나눗셈 연산은 정수 나눗셈으로 몫만 취하며, 피연산자 중 하나가 음수이면 양수로 바꿔 계산한 결괏값에 음수를 취한다. "

    elif op == "/":
        if a * b < 0:
            return -1*(abs(a)//abs(b))
        else:
            return a // b

 

2. 최소값 -> 최대값 출력하기

# 처음 코드
if ans1 < ans2:
    print(ans1)
    print(ans2)
else:
    print(ans2)
    print(ans1)
# 나중 코드
print(min(ans1, ans2))
print(max(ans1, ans2))

min과 max 활용하기

 

 

제출한 답(정답):

#입력받기
k1, o1, k2, o2, k3 = input().split()
k1, k2, k3 = int(k1), int(k2), int(k3)

#수를 입력해 계산
def calculate(a, op, b):
    if op == '+':
        ans = a + b
    elif op == '-':
        ans = a - b
    elif op == '*':
        ans = a * b
    elif op == '/':
        ans = a // b
        if a<0 or b<0:
            ans = ans+1
    return ans

# 앞부터 연산
temp = calculate(k1, o1, k2)
ans1 = calculate(temp, o2, k3)
# 뒤부터 연산
temp = calculate(k2, o2, k3)
ans2 = calculate(k1, o1, temp)

if ans1 < ans2:
    print(ans1)
    print(ans2)
else:
    print(ans2)
    print(ans1)