[プログラマー]ユニホーム
🔗 質問リンク
https://programmers.co.kr/learn/courses/30/lessons/42862
💻 コード#コード# def solution(n, lost, reserve):
answer = 0
data = [1] * (n + 2)
for i in lost:
if i in reserve:
reserve.remove(i)
else:
data[i] = 0
reserve.sort()
for i in reserve:
if data[i - 1] == 0:
data[i - 1] = 1
elif data[i + 1] == 0:
data[i + 1] = 1
answer = n - data.count(0)
return answer
デザイン
データリストの範囲はn + 2
理由は1番からn番までの生徒の真前方番号を確認するため、真後方番号は1番、n番の生徒も例外ではありません.運動服がある場合は1、盗難にあった学生は0とする.盗まれたものの、複数のユニホームを持っている学生は他の学生にユニホームを貸すことができず、自分で着ているため、その学生の番号を逆リストから削除して1に残す.
余分な服を着た学生は、まず自分の前の番号の学生が盗まれたかどうかを確認し、盗まれなかったら、後の番号の学生を確認します.
n=6、loss=[4,6]、reserve=[5,3]と入力すると、reserveがソートされていなければ、5番の学生は4番の学生に服を貸し、6番の学生は授業を受けることができなくなります.この場合、reserveをソートする必要があり、複数の服を着ている学生のうち、番号の小さい学生から、前番号、後番号を確認します.
📝 整理する
Pythonリスト関数の削除
def solution(n, lost, reserve):
answer = 0
data = [1] * (n + 2)
for i in lost:
if i in reserve:
reserve.remove(i)
else:
data[i] = 0
reserve.sort()
for i in reserve:
if data[i - 1] == 0:
data[i - 1] = 1
elif data[i + 1] == 0:
data[i + 1] = 1
answer = n - data.count(0)
return answer
デザイン
データリストの範囲は
n + 2
理由は1番からn番までの生徒の真前方番号を確認するため、真後方番号は1番、n番の生徒も例外ではありません.運動服がある場合は1、盗難にあった学生は0とする.盗まれたものの、複数のユニホームを持っている学生は他の学生にユニホームを貸すことができず、自分で着ているため、その学生の番号を逆リストから削除して1に残す.余分な服を着た学生は、まず自分の前の番号の学生が盗まれたかどうかを確認し、盗まれなかったら、後の番号の学生を確認します.
n=6、loss=[4,6]、reserve=[5,3]と入力すると、reserveがソートされていなければ、5番の学生は4番の学生に服を貸し、6番の学生は授業を受けることができなくなります.この場合、reserveをソートする必要があり、複数の服を着ている学生のうち、番号の小さい学生から、前番号、後番号を確認します.
📝 整理する
Pythonリスト関数の削除
remove()
:指定値を削除del()
:該当箇所の項目を削除Reference
この問題について([プログラマー]ユニホーム), 我々は、より多くの情報をここで見つけました https://velog.io/@xxwb__/프로그래머스-체육복テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol