문제
어떤 임의의 수식이 입력으로 들어올때 수식을 계산하는 프로그램을 짜시오. 수의 크기는 -10^100 이상 10^100이하이고, 수식에 괄호는 없다. 소수점이 나올 경우, 소수점은 내린다. 참고로, -5/2 = -3이고, 5/-2도 -3이다. -5/-2는 2이다.
조건 및 입출력
- 수의 개수 N(1 ≤ N ≤ 10) 이 주어지고 다음 2N-1 개의 줄에는 수와 연산자(+, -, *, /) 가 번갈아서 들어온다.
- 첫째 줄에 계산이 끝난 후 수를 출력한다.
- 시간 제한: 2초 이내 / 메모리 제한: 128MB
코드 (Python 3)
trys=int(input());
command=[];
for i in range(trys+(trys-1)):
command.append(input());
if(command[-1]=='/'):
command[-1]='//';
print(eval(''.join(command)));
여담
파이썬 내장 함수 중 하나인 eval() 함수를 사용했다.
이 함수는 문자열로 된 수식을 계산하여 값을 반환한다.
eval() 함수를 쓰게 되면 사칙연산 우선 순위나 연산자나 피연산자 생각할 필요가 전혀 없다.
Python이 알아서 다 해주기 때문이다.
그래서 모든 입력을 문자로 받았다.
다만, 조심해야 할 것이 있다.
문제에서, '소수점이 나올 경우, 소수점은 내린다.'는 조건이 있다.
때문에, 나누기 연산자(/)를 몫 연산자(//)로 바꿔주는 작업이 필요하다.
| 코드가 이상하거나, 이해되지 않는 부분이 있다면 댓글 남겨주세요! + 더 좋은 풀이 방법이 있다면 알려주세요 :) |
'Programming > Python' 카테고리의 다른 글
| [백준] 14425번 : 문자열 집합 (Python / 파이썬) (0) | 2023.08.13 |
|---|---|
| [백준] 20920번 : 영단어 암기는 괴로워 (Python / 파이썬) (0) | 2023.08.11 |
| [백준] 10816번 : 숫자 카드 2 (Python / 파이썬) (0) | 2023.08.07 |
| [백준] 17219번 : 비밀번호 찾기 (Python / 파이썬) (0) | 2023.08.07 |
| [백준] 7785번 : 회사에 있는 사람 (Python / 파이썬) (0) | 2023.08.07 |