from sys import stdinpassword=[]output = ''while True:try:password=list(map(int,stdin.readline().split()))#輸入密碼if password == []: password=list(map(int,stdin.readline().split()))backup_password=password.copy()#複製密碼n=int(stdin.readline())for k in range(n):p=q=0try_password=list(map(int,stdin.readline().split()))for t in range(4):#計算Aif password[t]==try_password[t]:p+=1backup_password[t]=-1try_password[t]=-1for t in backup_password:#計算Bif t!=-1:if t in try_password:q+=1try_password[try_password.index(t)]=-1output+=f"{p}A{q}B\n"except:print(output)break
這題我計算A、B那邊改了很多次,想問這題是不是用list一定會超時?還有一定要用dict才能不超時嗎?
backup_password.index
你用 index 比較花時間。
最近伺服器又變慢了,
python 的朋友解題要精打細算。
不一定用了 dict 就會比較快,
因為只用了 0~9 你可以開一個 digit[10]
針對每組測資讀取之後
例如正確的密碼 1228 先統計為 [0, 1, 2, 0, 0, 0, 0, 0, 1, 0]
嘗試的密碼 6 7 8 9
digit[6] = 0 第一個 6 就可以略過,這樣才能省時間。