score_count_time: 팀별 최종점수, 제출횟수, 제출시간을 저장하고 정렬하기 위한 리스트
우선 로그를 입력받는 동시에, team_and_score 리스트를 이용해 각 팀의 각 문제에 대한 점수를 max함수를 이용해 지속적으로 갱신한다.
score_count_time 리스트에는 제출횟수와 제출시간을 실시간으로 업데이트 한다.
모든 로그를 입력받았다면, team_and_score에 저장된 팀별 점수를 sum()으로 더해서 score_count_time 리스트에 넣어준다. 그러면 문제 정렬 조건인 점수 높은순, 제출횟수 적은순, 제출시간 빠른순에 해당하는 3가지 요소가 하나의 리스트에 전부 들어가게 된다. 단, 여기서 각 요소마다 팀번호를 추가해줘서 정렬 후에도 팀 번호를 잃어버리지 않게 된다. (그냥 정렬하면 순위대로 정렬되지만, 팀 번호는 잃어버린다)
마지막으로 lambda를 활용해서 정렬한 후, 입력받은 team에 대한 순위를 출력해주면 끝.
결과
다른 사람들 풀이도 몇개 봤는데 나름 잘 푼 편에 속한 것 같다. 시간은 거의 제일 빠른 편인 듯.
다만 한가지 최적화할 게 있다면, 팀 번호와 순위를 매핑하는 딕셔너리를 이용해볼까? 였는데,
어차피 각 테스트 케이스마다 순위는 단 한번 출력하고, 다음 테스트 케이스에서는 새로운 순위를 갱신하기 때문에,
팀 번호와 순위를 매핑하는 딕셔너리를 만들어 둔다 해도 단 한번 활용될 뿐이라 굳이 할 필요 없다고 생각했다.