왼쪽부터 계산하기


답안 제출

Points: 3
시간 제한: 2.0s
메모리 제한: 1G

문제 유형
허용된 언어
Python

한 개 이상의 정수를 인자로 받아 모든 값을 왼쪽부터 차례대로 계산한 결과를 반환하는 함수 calculateAll을 작성하시오.

계산 방법은 method로 정하며 다음 세 가지가 있다.

  • add: 모든 값을 왼쪽부터 차례대로 더한다.
  • mul: 모든 값을 왼쪽부터 차례대로 곱한다.
  • pow: 모든 값을 왼쪽부터 차례대로 거듭제곱한다.

method가 주어지지 않으면 기본 계산 방법은 add이다. 인자가 하나만 주어지면 계산 방법과 관계없이 그 값을 그대로 반환한다.

예를 들어 인자가 (2, 2, 3, 4)라면 다음과 같이 계산한다.

  • method="add"
    • \(2+2=4\)
    • \(4+3=7\)
    • \(7+4=11\)
  • method="mul"
    • \(2 \times 2=4\)
    • \(4 \times 3=12\)
    • \(12 \times 4=48\)
  • method="pow"
    • \(2^2=4\)
    • \(4^3=64\)
    • \(64^4=16,777,216\)

함수 원형은 주어지지 않는다. 설명과 아래의 호출 코드를 보고 가변 인자와 기본 매개변수를 사용하여 함수의 매개변수와 반환값을 직접 설계한다.

함수를 사용하는 코드

작성한 함수는 아래 코드와 함께 실행된다.

first_line = input().split()
n = int(first_line[0])
args = list(map(int, input().split()))

if len(first_line) == 1:
    result = calculateAll(*args)
else:
    method = first_line[1]
    result = calculateAll(*args, method=method)

print(result)
print(type(result))

위 코드가 정상적으로 동작하도록 함수를 직접 정의한다. 제출할 때는 작성한 함수의 정의 전체만 제출한다.

입력

첫째 줄에 인자의 개수 \(N\)이 주어진다. 계산 방법을 명시하는 경우 \(N\)의 뒤에 method가 공백으로 구분되어 함께 주어진다. method가 주어지지 않으면 기본 계산 방법을 사용해야 한다.

둘째 줄에 \(N\)개의 정수가 공백으로 구분되어 주어진다.

  • \(1 \le N \le 10\)
  • 각 인자는 \(-1,000,000,000\) 이상 \(1,000,000,000\) 이하이다.
  • methodadd, mul, pow 중 하나이다.
  • methodpow라면 두 번째 이후의 인자는 모두 음이 아닌 정수이다.
  • 모든 중간 계산 결과와 최종 결과의 절댓값은 \(1,000,000,000,000,000,000\) 이하이다.

출력

지정된 방법으로 모든 인자를 왼쪽부터 계산한 결과를 출력한다. 함수는 int를 반환해야 한다.

마지막 줄에는 함수가 반환한 값의 자료형을 출력한다.

예제 입력 1

4
2 2 3 4

예제 출력 1

11
<class 'int'>

예제 입력 2

4 mul
2 2 3 4

예제 출력 2

48
<class 'int'>

예제 입력 3

4 pow
2 2 3 4

예제 출력 3

16777216
<class 'int'>

코멘트

현재 작성된 코멘트가 없습니다.