[白俊]1931号-会議室の手配
初めての試み
T = int(input()) # 회의의 수
start, end, cnt = 0,0,0
for i in range(T):
A, B = map(int,input().split())
if (end <= A):
start = A
end = B
cnt += 1
print(cnt)
T個の会議を入力すると、順番に始まると思います.T個の会議は入力順ではないので、入力した会議を昇順で並べ替える必要があります
->また、(1、10)、(2、2)、(3、5)がこれらの会議の終了時間に従ってソートされていなければ、(1、10)先に会議を占領した場合、残りの会議は実行できません.そのため、会議の最大時間を基準にしたソート作業が必要です.
二次試行
T = int(input()) # 회의의 수
start, end, cnt = 0,0,0
lst = []
for i in range(T): # T개의 회의를 입력받고 회의들을 lst에 저장한다.
A, B = map(int,input().split())
lst.append([A,B])
lst.sort(key=lambda x : (x[1],x[0])) # 끝나는 시간을 기준으로 오름차순함 정렬한 뒤, 시작하는 시간으로 오름차순 정렬
for i in range(T):
if (lst[i][0] == lst[i][1]):
cnt += 1
elif (end <= lst[i][0]):
start = lst[i][0]
end = lst[i][1]
cnt += 1
print(cnt)
25%前後でエラーが発生しました.問題中の反例テストでも良いのですが、どの部分が問題なのかわかりません
lst.sort(key = lambda x: (x[1],x[0]))
->(x[1],x[0])は、終了時間を基準としてソートし、開始時間を基準としてソートします.
最終コード
T = int(input()) # 회의의 수
start, end, cnt = 0,0,0
lst = []
for i in range(T): # T개의 회의를 입력받고 회의들을 lst에 저장한다.
A, B = map(int,input().split())
lst.append([A,B])
lst.sort(key=lambda x : (x[1],x[0])) # 끝나는 시간을 기준으로 오름차순함 정렬한 뒤, 시작하는 시간으로 오름차순 정렬
for i in range(T):
if (end <= lst[i][0]):
end = lst[i][1]
cnt += 1
print(cnt)
これ以上条件をつける必要はありません...終了時間を基準に昇順で並べ替えた後、開始時間を基準に昇順で並べ替えると、無条件(4,4)のように開始時間と終了時間が同じ会議がカウントされます.Reference
この問題について([白俊]1931号-会議室の手配), 我々は、より多くの情報をここで見つけました https://velog.io/@yerimstar/백준-1931번-회의실-배정テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol