고급 카운터 클래스
Counter의 기능을 상속받고 감소와 곱셈 기능을 추가하는 AdvancedCounter 클래스를 작성하시오. 이 문제에서는 메서드 오버라이딩을 사용하지 않는다.
미리 작성된 코드
다음 부모 클래스는 제출 코드 앞에 자동으로 추가된다. 부모 클래스는 제출하거나 다시 작성하지 않는다.
class Counter:
def __init__(self, value):
self.value = value
def increase(self, amount):
self.value += amount
def get_value(self):
return self.value
작성할 클래스
다음 자식 클래스만 작성한다.
class AdvancedCounter(Counter):
def decrease(self, amount):
# 코드를 작성하세요.
def multiply(self, amount):
# 코드를 작성하세요.
Counter의 생성자는 초기값value를 저장한다.increase(amount)는 현재 값에amount를 더한다.get_value()는 현재 값을int로 반환한다.AdvancedCounter는Counter를 상속하며 부모의 메서드를 다시 작성하지 않는다.decrease(amount)는 현재 값에서amount를 뺀다.multiply(amount)는 현재 값에amount를 곱한다.
클래스를 사용하는 코드
작성한 클래스들은 아래 코드와 함께 실행된다.
value = int(input())
q = int(input())
counter = AdvancedCounter(value)
for _ in range(q):
command = input().split()
if command[0] == "increase":
counter.increase(int(command[1]))
elif command[0] == "decrease":
counter.decrease(int(command[1]))
elif command[0] == "multiply":
counter.multiply(int(command[1]))
else:
result = counter.get_value()
print(result)
print(type(result))
위 코드가 정상적으로 동작하도록 작성할 자식 클래스의 정의 전체만 제출한다. 미리 작성된 부모 클래스, 입력을 받는 코드, 객체를 생성하는 코드는 제출하지 않는다.
상태만 변경하는 메서드의 반환값은 출력하지 않는다. 값을 조회하거나 계산 결과를 반환하는 메서드는 반환값과 자료형을 출력한다.
입력
첫째 줄에 초기값 value, 둘째 줄에 명령 수 \(Q\)가 주어진다.
다음 \(Q\)개의 줄에는 increase amount, decrease amount, multiply amount, value 중 하나가 주어진다.
- \(-1,000,000,000 \le value,amount \le 1,000,000,000\)
- \(1 \le Q \le 1,000\)
출력
value 명령마다 현재 값과 반환값의 자료형을 출력한다. 나머지 명령은 아무것도 출력하지 않는다.
예제 입력 1
10
7
value
increase 5
value
decrease 3
value
multiply 4
value
예제 출력 1
10
<class 'int'>
15
<class 'int'>
12
<class 'int'>
48
<class 'int'>
예제 설명 1
초기값은 10이다. 상속받은 increase(5)를 호출하면 15가 되고, 새로 추가한 decrease(3)을 호출하면 12가 된다. 이어서 multiply(4)를 호출하면 최종 값은 48이다. 상태를 변경하는 세 명령은 출력하지 않는다.
예제 입력 2
0
3
increase 1
decrease 2
value
예제 출력 2
-1
<class 'int'>
코멘트