문제
N개의 큰 수와 N-1개의 연산자(+, -, *, /)가 주어진다. 수식을 계산한 결과를 출력하라. 나눗셈은 정수 나눗셈이다.
입력
첫째 줄에 N, 이후 N개의 수와 N-1개의 연산자가 번갈아 주어진다.
출력
수식의 결과를 출력한다.
예제
| 입력 | 출력 |
|---|---|
2 1000000000000000000 + 1000000000000000000 | 2000000000000000000 |
풀이
수와 연산자를 하나의 문자열로 합친 뒤 Python의 eval()로 계산한다.
- N개의 수와 N-1개의 연산자를 순서대로 읽어 하나의 문자열로 연결한다
/를//로 치환하여 정수 나눗셈으로 변환한다eval()로 수식을 평가하여 결과를 출력한다
핵심 아이디어: Python은 임의 정밀도 정수를 지원하므로, 큰 수도 eval()로 직접 계산할 수 있다.
코드
if __name__ == "__main__":
equation = ""
n = int(input())
for _ in range(n + n - 1):
equation += input()
equation = equation.replace("/", "//")
print(eval(equation))복잡도
- 시간: O(N)
- 공간: O(N)