문제

어떤 임의의 수식이 입력으로 들어올때 수식을 계산하는 프로그램을 짜시오. 수의 크기는 -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이 알아서 다 해주기 때문이다.

 

그래서 모든 입력을 문자로 받았다.

 

다만, 조심해야 할 것이 있다.

문제에서, '소수점이 나올 경우, 소수점은 내린다.'는 조건이 있다.

때문에, 나누기 연산자(/)를 몫 연산자(//)로 바꿔주는 작업이 필요하다.

 

 

코드가 이상하거나, 이해되지 않는 부분이 있다면 댓글 남겨주세요!

+ 더 좋은 풀이 방법이 있다면 알려주세요 :)

+ Recent posts