[プログラマー]Lv1ジャージ
[プログラマー]
Lv.1ジャージ
1.質問
2.解答
この問題をリストで解決しようとしましたが、実行時にエラーが発生しました.
問題をよく読んでいないので、お金がたくさんありますが、盗まれたくない症例です.
3.コード
マイコード
<最適コード1>
まずreserveとlossの重複インデックスを削除するために,差分セットを用いて分離する.
その後、reserve setのインデックス+-loss setに値がある場合は、loss setから削除します(他の操作が可能であるため).
全生徒数(n)から、これ以上余罰を受けられない生徒数を減算する.
<最適コード2>
代替setはfor文listによってreserveとlossの重複を除去する.
<最適コード3>
私の答えと似ていますが、ここではリストを単独で作成するのではなく、
Lv.1ジャージ
1.質問
input
学生数/運動服のない学生指数/性別のある学生指数output
体育服のある学生合計(体育服はindexを前後に借りるしかない)2.解答
この問題をリストで解決しようとしましたが、実行時にエラーが発生しました.
問題をよく読んでいないので、お金がたくさんありますが、盗まれたくない症例です.
3.コード
マイコード
def solution(n, lost, reserve):
student = []
i = 0
while i < n:
if i+1 in lost:
student.append(0)
elif i+1 in reserve:
student.append(2)
else:
student.append(1)
i += 1
answer = 0
if student[0] == 0 and student[1] == 2:
student[0] = 1
student[1] = 1
if student[-1] == 0 and student[-2] == 2:
student[-1] == 1
student[-2] == 1
for i in range(len(student)):
if student[i] == 0:
if student[i-1] == 2:
answer += 1
student[i-1] = 1
elif student[i+1] == 2:
answer += 1
student[i+1] = 1
else:
answer += 1
return answer
最適コード1def solution(n, lost, reserve):
reserve_set = set(reserve)-set(lost)
lost_set = set(lost)-set(reserve)ㅡ
for reserve_person in reserve_set:
if reserve_person-1 in lost_set:
lost_set.remove(reserve_person-1)
elif reserve_person+1 in lost_set:
lost_set.remove(reserve_person+1)
return n-len(lost_set)
最適コード2def solution(n, lost, reserve):
_reserve = [r for r in reserve if r not in lost]
_lost = [l for l in lost if l not in reserve]
for r in _reserve:
f = r - 1
b = r + 1
if f in _lost:
_lost.remove(f)
elif b in _lost:
_lost.remove(b)
return n - len(_lost)
最適コード3def solution(n, lost, reserve):
answer = 0
for k in range n:
i = k+1
if i not in lost: #안 잃어버린 학생
answer += 1
else:
if i in reserve: #잃어버렸지만 여분도 있는 학생
answer += 1
reserve.remove(i)
lost.remove(i)
for i in lost: #잃어버리고 여분도 없어서 빌려야 하는 학생
if i-1 in reserve:
answer += 1
reserve.remove(i-1)
elif i+1 in reserve:
answer +=1
reserve.remove(i+1)
return answer
反省する<最適コード1>
まずreserveとlossの重複インデックスを削除するために,差分セットを用いて分離する.
その後、reserve setのインデックス+-loss setに値がある場合は、loss setから削除します(他の操作が可能であるため).
全生徒数(n)から、これ以上余罰を受けられない生徒数を減算する.
<最適コード2>
代替setはfor文listによってreserveとlossの重複を除去する.
<最適コード3>
私の答えと似ていますが、ここではリストを単独で作成するのではなく、
input
の値を使用しています.Reference
この問題について([プログラマー]Lv1ジャージ), 我々は、より多くの情報をここで見つけました https://velog.io/@anthony16/프로그래머스-Lv.1-체육복テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol