首先,如果測資線上測試的時候不會過,應該是因為他的換行多了一個空格,但實際上如果你兩筆測資之間沒有換行,因為這題他是用tolerance檢測,所以不管有沒有換行都會AC。
這題的題目敘述,讓我想到取餘數、間隔,但又不需要頭尾相連的循環,這不就是python擅長的 切片slice 嗎?!可是slice是取出想要的,但我是要丟掉,該怎麼辦呢?ㄟ~這不是有del嗎?
candidates = list(range(1, N+1))
del candidates[step-1::step]
print('peek:', candidates)
你如果自己設定一個N跟step玩玩看,應該可以知道發生了什麼事
起始位置要-1因為是0-base與1-base的差別(陣列是從0開始數,還是從1開始數)
阿如果不小心刪太多,人數比預定可以回家的人還少怎麼辦?
我的解決方法是把要刪掉的人,先暫存起來,如果最後需要的話,就從tmp最右邊慢慢給他加回去
tmp = candidates[step-1::step]
candidates = sorted(candidates + tmp[:看少幾個人:-1])
主要就是原本應該要用for迴圈,然後設立flag之類的,或是index取餘數。
沒想到Python可以用個slice跟del就解決了,有點太方便了www