1. 程式人生 > >Home11月24:吃雞遊戲

Home11月24:吃雞遊戲

Description

xxx 吃雞成癮。為此他決定逃課吃雞!但是學校有規定,曠課到一定次數,是不給予期末考的資格的。因此 xxx 決定每門課最多逃兩次。現在告訴你,一個學期有 n 節課程,第 i節課的科目是 si​,時間為 ti​。你需要告訴 xxx 這個學期他逃課吃雞的最大時間是多少。

Input

第一行給出一個整數n(1≤n≤10000)為該學期課程節數。接下來n行,第i+1行給出第i節課的科目si和時間ti中間用空格隔開si​由小寫字母組成1≤∣si∣≤10,1≤ti≤10000。若 si=sj​則認為第i節課和第j節課是同一門課。

Output

輸出xxx該學期逃課吃雞的最大時間。

Sample Input 1

7
english 2
english 1
math 3
english 3
cook 5
eatchicken 10
cook 5

Sample Output 1

28

python思路

  1. 可以想到生成兩個列表,一個用於存放科目(subject)的列表l,一個用於存放時間(time)的列表m。
  2. time列表m中建立每個科目對應的子列表。遍歷每一個輸入的科目,如果subject列表l中已經有此科目,就把時間放到time對應的子列表中,如果沒有此科目就分別在sub列表和time列表中加入科目和時間。
  3. 最後遍歷time列表中的子列表,判斷子列表中元素是否大於等於3。如果大於等於3,排序後取最大的兩個,如果小於3,直接用sum函式。
n=int(input())
l=[]                              #用於存放科目
m=[]                            #用於存放時間
for i in range(n):
    sub,time=input().split()
    if sub not in l:
        l.append(sub)
        m.append([int(time)])
    elif sub in l:
        m[l.index(sub)].append(int(time))
a=0
for h in m:
    if len(h)>=3:
        h.sort()
        a+=h[-2]+h[-1]
    else:
        a+=sum(h)
print(a)