게임 기록 클래스


답안 제출

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

문제 유형
허용된 언어
Python

플레이어별 최고 점수와 모든 플레이어의 전체 최고 점수를 관리하는 GameRecord 클래스를 작성하시오.

이 문제에서는 여러 객체가 각각 저장하는 값과 모든 객체가 공유하는 클래스 변수를 함께 다룬다.

작성할 클래스

다음 형태의 클래스를 작성한다.

class GameRecord:
    best_score = 0

    def __init__(self):
        # 코드를 작성하세요.

    def update_score(self, score):
        # 코드를 작성하세요.

    def get_high_score(self):
        # 코드를 작성하세요.

    @classmethod
    def get_best_score(cls):
        # 코드를 작성하세요.
  • 각 플레이어의 최고 점수는 처음에 0이다.
  • 클래스 변수 best_score는 모든 플레이어의 최고 점수를 저장하며 처음에는 0이다.
  • update_score(score)score가 해당 플레이어의 기존 최고 점수보다 클 때 개인 최고 점수를 갱신한다. 전체 최고 점수보다도 크다면 best_score도 갱신한다.
  • get_high_score()는 해당 플레이어의 최고 점수를 int로 반환한다.
  • 클래스 메서드 get_best_score()는 모든 플레이어의 전체 최고 점수를 int로 반환한다.

클래스를 사용하는 코드

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

n = int(input())
players = [GameRecord() for _ in range(n)]
q = int(input())

for _ in range(q):
    command = input().split()

    if command[0] == "update":
        players[int(command[1]) - 1].update_score(int(command[2]))
    elif command[0] == "score":
        result = players[int(command[1]) - 1].get_high_score()
        print(result)
        print(type(result))
    else:
        result = GameRecord.get_best_score()
        print(result)
        print(type(result))

위 코드가 정상적으로 동작하도록 클래스를 작성한다. 제출할 때는 작성한 클래스의 정의 전체만 제출한다. 입력을 받거나 객체를 생성하는 코드는 제출하지 않는다.

상태만 변경하는 메서드의 반환값은 출력하지 않는다. 값을 조회하거나 계산 결과를 반환하는 메서드는 반환값과 자료형을 출력한다.

입력

첫째 줄에 플레이어 수 \(N\)이 주어진다.

둘째 줄에 명령 수 \(Q\)가 주어진다. 다음 \(Q\)개의 줄에는 다음 명령 중 하나가 주어진다.

  • update i score: \(i\)번째 플레이어가 얻은 점수를 기록한다.
  • score i: \(i\)번째 플레이어의 최고 점수를 조회한다.
  • best: 모든 플레이어의 전체 최고 점수를 조회한다.

  • \(1 \le N \le 100\)

  • \(1 \le Q \le 1,000\)
  • \(0 \le score \le 1,000,000,000\)

출력

scorebest 명령마다 반환값과 반환값의 자료형을 출력한다. update 명령은 아무것도 출력하지 않는다.

예제 입력 1

3
9
best
update 1 100
score 1
best
update 2 150
score 2
best
update 1 90
score 1

예제 출력 1

0
<class 'int'>
100
<class 'int'>
100
<class 'int'>
150
<class 'int'>
150
<class 'int'>
100
<class 'int'>

예제 설명 1

처음에는 모든 개인 최고 점수와 전체 최고 점수가 0이다.

첫 번째 플레이어가 100점을 얻으면 개인 최고 점수와 전체 최고 점수가 모두 100이 된다. 두 번째 플레이어가 150점을 얻으면 두 번째 플레이어와 전체 최고 점수가 150이 된다. 이후 첫 번째 플레이어가 90점을 얻어도 기존 개인 최고 점수 100보다 낮으므로 기록은 바뀌지 않는다.

예제 입력 2

1
5
score 1
update 1 1
best
update 1 0
score 1

예제 출력 2

0
<class 'int'>
1
<class 'int'>
1
<class 'int'>

코멘트

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