スポーツウェア(プログラマーの質問)Python解答
質問リンク:https://programmers.co.kr/learn/courses/30/lessons/42862
入力値nは総人数(int)に等しく、lossはジャージを失った人(list)、reserveは余分なジャージを持っている人(list)に等しい.(ちなみにlossとreserveは最初から降順で並んでいます.)また、余分な運動服を持っている人は、自分の前の番号や後の番号しか貸せません.(EX.reserveに[2]がある場合、listの値に[1]または[3]がある場合のみ、どちらかを貸すことができます.)
このとき、スポーツウェアをつけて体育の授業を受けられる最大の学生数を回復することが目的です.
そして、forゲートは紛失した+1または-1人に余分な運動服があるかどうかを確認し、あれば貸したので、答えに+1とreserveでremoveを使って除去します.
結果はよく出なかった.この程度では、しっかり把握できていないのかもしれませんが、問題を見直してみると、余計なユニホームを持っている人も盗まれていることに気づきました.
つまり、余分な運動服を持っている人が盗まれた場合、余分な運動服は自分で使うことになります.
2行のコードを追加しただけで、すべて正しいです.
入力値nは総人数(int)に等しく、lossはジャージを失った人(list)、reserveは余分なジャージを持っている人(list)に等しい.(ちなみにlossとreserveは最初から降順で並んでいます.)また、余分な運動服を持っている人は、自分の前の番号や後の番号しか貸せません.(EX.reserveに[2]がある場合、listの値に[1]または[3]がある場合のみ、どちらかを貸すことができます.)
このとき、スポーツウェアをつけて体育の授業を受けられる最大の学生数を回復することが目的です.
説明する
1.最初
def solution(n, lost, reserve):
answer = n - len(lost)
for i in lost:
for j in reserve:
if i - 1 == j:
answer += 1
reserve.remove(j)
elif i + 1 == j:
answer += 1
reserve.remove(j)
return answer
回答の中でまず全体の人数-失った人数を言い出しますそして、forゲートは紛失した+1または-1人に余分な運動服があるかどうかを確認し、あれば貸したので、答えに+1とreserveでremoveを使って除去します.
結果
結果はよく出なかった.この程度では、しっかり把握できていないのかもしれませんが、問題を見直してみると、余計なユニホームを持っている人も盗まれていることに気づきました.
つまり、余分な運動服を持っている人が盗まれた場合、余分な運動服は自分で使うことになります.
2.2番目
def solution(n, lost, reserve):
set_lost = list(set(lost) - set(reserve))
set_reserve = list(set(reserve) - set(lost))
answer = n - len(set_lost)
for i in set_lost:
for j in set_reserve:
if i - 1 == j:
answer += 1
set_reserve.remove(j)
elif i + 1 == j:
answer += 1
set_reserve.remove(j)
return answer
したがって、setを使用して、予め失われたおよびreserveの共通セットを除去する.(EX.lossが[1,2,5]の高reserveが[1,3]の場合、2つの共通セット[1]は2つの配列からすべて削除されるため、lossの[2,5]はreserveとなる.)結果
2行のコードを追加しただけで、すべて正しいです.
Reference
この問題について(スポーツウェア(プログラマーの質問)Python解答), 我々は、より多くの情報をここで見つけました https://velog.io/@viriditass/체육복programmers-문제-python-풀이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol