[programmers]-スポーツウェア
18508 ワード
1. Problem 📃
https://programmers.co.kr/learn/courses/30/lessons/42862
次の質問は、ユニホームを複数着持っていて、ない学生と紛失した学生が、問題の条件によって与えられると、体育の授業を受けることができる学生の数はいくらですか.
2. Logic 👨🏫
3. Code 💻
1.私が解いたパスワード
def solution(n, lost, reserve):
s_lost = set(lost) - set(reserve)
s_reserve = set(reserve) - set(lost)
for i in s_reserve:
if i-1 in s_lost:
s_lost.remove(i-1)
elif i+1 in s_lost:
s_lost.remove(i+1)
return n - len(s_lost)
-----------출력을 위한 코드입니다-------------
reserve = [1, 3, 6]
lost = [2, 4, 5, 7]
print(solution(7, lost, reserve))
4. Feedback 📚
1.set資料型
1.集合資料型
-set資料型は順序がなく、重複が許されないという特徴がある.# 집합 선언
set1 = set([1,2,3])
set2 = set("oddong hello")
print set1
print set2
set([1, 2, 3])
set([' ', 'o', 'n', 'd', 'l', 'o','d', 'e', 'l', 'h', 'g']) // 순서가 없는것을 볼 수 있다.
2.集合へのデータの追加と削除
# 집합 선언
set1 = set([1,2,3])
# 값 하나 추가 : add(x)
set1.add(4)
print set1
# 값 여러개 추가 : update(x)
set1.update([5,6,7,8,9,10])
print set1
# 값 제거 : remove(x)
set1.remove(10)
print set1
# 집합 set1 제거
del set1
set([1, 2, 3, 4])
set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
set([1, 2, 3, 4, 5, 6, 7, 8, 9])
3.インデックスを参照する必要がある場合
# 집합 선언
set1 = set([1,2,3])
list1 = list(set1)
print list1
print list1[1]
[1, 2, 3]
2
コレクションに順序がなく、インデックス参照値は使用できません.インデックスを参照するには、リストまたは凡例に変換する必要があります.
4.集合演算
# 집합 선언
set1 = set([1,2,3])
set2 = set([2,4,5,6])
set3 = set() # 공집합
# set1과 set2의 교집합
print set1 & set2
print set1.intersection(set2)
# set1과 set2의 합집합
print set1 | set2
print set1.union(set2)
# set1과 set2의 차집합
print set1 - set2
print set1.difference(set2)
print set2.difference(set1)
# set1과 set2의 합집합에서 교집합을 뺀 차집합
print set1 ^ set2
set([2])
set([2])
set([1, 2, 3, 4, 5, 6])
set([1, 2, 3, 4, 5, 6])
set([1, 3])
set([1, 3])
set([4, 5, 6])
set([1, 3, 4, 5, 6])
setを利用して、私は差集を行うことができることを意識して、それをこの問題に応用して、これは本当に役に立ち、私が必ず知ってほしい機能の一つです.
Reference
この問題について([programmers]-スポーツウェア), 我々は、より多くの情報をここで見つけました
https://velog.io/@odh0112/Programmers-체육복
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
def solution(n, lost, reserve):
s_lost = set(lost) - set(reserve)
s_reserve = set(reserve) - set(lost)
for i in s_reserve:
if i-1 in s_lost:
s_lost.remove(i-1)
elif i+1 in s_lost:
s_lost.remove(i+1)
return n - len(s_lost)
-----------출력을 위한 코드입니다-------------
reserve = [1, 3, 6]
lost = [2, 4, 5, 7]
print(solution(7, lost, reserve))
1.set資料型
1.集合資料型
-set資料型は順序がなく、重複が許されないという特徴がある.
# 집합 선언
set1 = set([1,2,3])
set2 = set("oddong hello")
print set1
print set2
set([1, 2, 3])
set([' ', 'o', 'n', 'd', 'l', 'o','d', 'e', 'l', 'h', 'g']) // 순서가 없는것을 볼 수 있다.
2.集合へのデータの追加と削除
# 집합 선언
set1 = set([1,2,3])
# 값 하나 추가 : add(x)
set1.add(4)
print set1
# 값 여러개 추가 : update(x)
set1.update([5,6,7,8,9,10])
print set1
# 값 제거 : remove(x)
set1.remove(10)
print set1
# 집합 set1 제거
del set1
set([1, 2, 3, 4])
set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
set([1, 2, 3, 4, 5, 6, 7, 8, 9])
3.インデックスを参照する必要がある場合
# 집합 선언
set1 = set([1,2,3])
list1 = list(set1)
print list1
print list1[1]
[1, 2, 3]
2
コレクションに順序がなく、インデックス参照値は使用できません.インデックスを参照するには、リストまたは凡例に変換する必要があります.4.集合演算
# 집합 선언
set1 = set([1,2,3])
set2 = set([2,4,5,6])
set3 = set() # 공집합
# set1과 set2의 교집합
print set1 & set2
print set1.intersection(set2)
# set1과 set2의 합집합
print set1 | set2
print set1.union(set2)
# set1과 set2의 차집합
print set1 - set2
print set1.difference(set2)
print set2.difference(set1)
# set1과 set2의 합집합에서 교집합을 뺀 차집합
print set1 ^ set2
set([2])
set([2])
set([1, 2, 3, 4, 5, 6])
set([1, 2, 3, 4, 5, 6])
set([1, 3])
set([1, 3])
set([4, 5, 6])
set([1, 3, 4, 5, 6])
setを利用して、私は差集を行うことができることを意識して、それをこの問題に応用して、これは本当に役に立ち、私が必ず知ってほしい機能の一つです.Reference
この問題について([programmers]-スポーツウェア), 我々は、より多くの情報をここで見つけました https://velog.io/@odh0112/Programmers-체육복テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol