スポーツウェア[レベル1]Python
1666 ワード
問題の説明
昼食の時間に盗まれ、一部の学生の運動服が盗まれた.幸いなことに、余分な運動服を貸したい学生がいます.学生の番号は体格順で、前の番号の学生か後ろの番号の学生の運動服しか貸せません.例えば、4番の学生は3番か5番の学生にしか運動服を貸すことができません.運動服がないと授業を受けられないので、適当に運動服を借りて、できるだけ多くの学生に体育の授業をさせなければなりません.
すべての学生の数n,ジャージを盗まれた学生の番号の並びloss,複数のジャージを持った学生の番号の並びreserveをパラメータとした場合,解関数を書いて体育の授業を受けられる学生の最上位値を返してください.
せいげんじょうけん
I/O例
I/O例説明
例1
1番学生は運動服を2番学生に貸し、3番学生または5番学生は運動服を4番学生に貸し、5人は体育の授業を受けることができる.
例2
3番の学生は運動服を2番の学生か4番の学生に貸して、4人の学生は体育の授業を受けることができます.
その他のテストケース
n(int): 3
lost(int[]): [3]
reserve(int[]): [1]
Return: 2
n(int): 5
lost(int[]): [2, 4]
reserve(int[]): [3, 1]
Return: 5
n(int): 6
lost(int[]): [1, 3, 5]
reserve(int[]): [2, 4, 6]
Return: 6
n(int): 5
lost(int[]): [1, 2, 3]
reserve(int[]): [2, 3, 4]
Return: 4
コード(時間複雑度O(n^2)
def solution(n, lost, reserve):
answer = 0
_reserve = list(set(reserve) - set(lost))
_lost = list(set(lost) - set(reserve))
print(_lost, _reserve)
for i in _reserve: -> O(n) 시간 복잡도
if i-1 in _lost:
_lost.remove(i-1) -> O(n) 시간 복잡도
elif i+1 in _lost:
_lost.remove(i+1)
print(_lost, _reserve)
return n - len(_lost)
Reference
この問題について(スポーツウェア[レベル1]Python), 我々は、より多くの情報をここで見つけました https://velog.io/@skrudfhr02/체육복-Level-1-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol