고민:
연산하는 부분을 어떻게 처리할지? 일일이 경우의 수를 나열하기에는 코드가 길다
-> 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)
'Python > 알고리즘' 카테고리의 다른 글
| [프로그래머스] 60057 문자열 압축 (0) | 2022.07.10 |
|---|---|
| [백준] 11478 / 18247 (0) | 2022.07.06 |
| [백준] 1225 이상한 곱셈 (0) | 2022.07.06 |
| [백준] 5639 이진 검색 트리 (미완) (0) | 2022.07.03 |
| [python] 1699 제곱수의 합 (미해결) (0) | 2022.07.03 |