10/ 24 파이썬 공부
1. 백준 2408 큰 수 계산
어떤 임의의 수식이 입력으로 들어올때 수식을 계산하는 프로그램을 짜시오.
수의 크기는 -10^(100) 이상 10^(100)이하이고, 수식에 괄호는 없다.
소수점이 나올 경우, 소수점은 내린다. 참고로, -5/2 = -3이고, 5/-2도 -3이다. -5/-2는 2이다.
수의 개수 N(1 ≤ N ≤ 10) 이 주어지고 다음 2N-1 개의 줄에는 수와 연산자(+, -, *, /) 가 번갈아서 들어온다. 첫째 줄에 계산이 끝난 후 수를 출력한다.
>>>코드1 : 리스트 입력 후 곱셈, 나눗셈 먼저 처리 후 덧셈 뺼셈 처리하기
# 수의 개수 입력
n = int(input())
# 전체 식을 리스트로 만들기
l = []
i = 0
while i < 2*n-1:
m = input()
# 짝수번째면 숫자 입력받기
if i%2 == 0:
l.append(int(m))
# 홀수번째면 기호 입력받기
else:
# 만약 기호가 곱셈이면 마지막 숫자와 새로 입력할 숫자를 곱해서 마지막 리스트를 수정하기
if m == '*':
k = int(input())
l[-1] = l[-1] * k
i += 1
# 만약 기호가 나눈셈이면 마지막 숫자와 새로 입력할 숫자를 나누어서 마지막 리스트를 수정하기
elif m == '/':
k = int(input())
l[-1] = l[-1] // k
i += 1
# 기호가 덧셈이나 나눗셈이면 그냥 리스트에 추가하기
else:
l.append(m)
i += 1
result = l[0]
# 덧셈 나눗셈 계산하기
for i in range(1, len(l), 2):
if l[i] == '+':
result += l[i+1]
elif l[i] == '-':
result -= l[i+1]
# 결과 출력하기
print(result)
그런데 이렇게 하는게 아니였던 것 같다.
>>> 코드 2: eval 함수 사용하기
equation = ''
for i in range(int(input())*2-1):
n = input()
if n == '/':
equation += '//'
else:
equation += n
print(eval(equation))
>>>코드 설명
- eval() 함수
매개변수로 받은 expression (= 식)을 문자열로 받아서 실행하는 함수이다.
예를 들어
eval("2 + 1")
이 입력되면 3을 반환하는 자동 계산 함수이다.
'백준 > 백준 파이썬' 카테고리의 다른 글
| 백준 파이썬 2592번 대표값 (Today I Learn 2023.10.26) (1) | 2023.10.31 |
|---|---|
| 백준 파이썬 2774번 아름다운 수 (Today I Learn 2023.10.25) (0) | 2023.10.30 |
| 백준 파이썬 28214번 크림빵 (Today I Learn 2023.10.22) (1) | 2023.10.22 |
| 백준 파이썬 2751번 수 정렬하기 2 (Today I Learn 2023.10.21) (1) | 2023.10.21 |
| 백준 파이썬 10989번 수 정렬하기 3 (Today I Learn 2023.10.20) (0) | 2023.10.20 |