[白俊]1931号会議室、Pythonを手配


質問する


白駿1931号。


https://www.acmicpc.net/problem/1931

に答える


sortメソッドの使用
すべての会議は開始時間の昇順に並べられています.
最も早い開始時間の会議を会議変数に配置します.
会議が重複しないように、次の会議と比較し続けます.
次回の会議がもっと早く終わる場合は、会議に次の会議に参加し、cnt+=1、
ドア回りに繰り返すから
上記の例を引き続き使用して1を入力してください.
import sys
input = sys.stdin.readline

N= int(input()) #회의 수
timeTable = []  

for i in range(N):
    timeTable.append(list(map(int,input().split())))    
#[[A회의 시작시간, A회의 끝나는 시간],[B회의 시작시간, B회의 끝나는 시간] ... ]
#전체 회의를 위의 형태로 만들어서 사용하려고 함.

timeTable.sort() #회의 시작 시간 기준으로 오름차순 정렬
		 #이때 회의 시작 시간이 같으면 끝나는 시간을 기준으로 오름차순
timeTableは次のようにソートされます.
[[0, 6], [1, 4], [2, 13], [3, 5], [3, 8], [5, 7], [5, 9], [6, 10], [8, 11], [8, 12], [12, 14]]
meeting = timeTable[0] 
meetingCnt = 1 	       
開始時間の一番早い会議をmeetingに設定
1回目の会議数1、以降は毎回次の会議に移る場合+=1
for i in range(1, N): #두 번째 회의부터 마지막 회의까지, 첫 번째 회의는 meeting
    if meeting[0] < timeTable[i][0]: 
次の会議の開始時間は、会議の開始時間に等しいか、または遅い.
次回の会議の開始時間が会議と同じであれば、終了時間は次回の会議の開始時間と同じです.
[0,6],[1,4]のように,次の会議の開始時間が遅い場合に対処すればよい.
for i in range(1, N): 
    if meeting[0] < timeTable[i][0]: 
        if meeting[1] <= timeTable[i][0]:
            meeting = timeTable[i] 
            meetingCnt += 1 
        elif meeting[1] >= timeTable[i][1]: 
            meeting = timeTable[i]
2番目のif文:[0,6],[7,10]会議の終了時間が次の会議の開始時間より早い場合、次の会議を会議に入れ、meetingcnt+=1にする.
Elif文:[0,6],[1,4]のように、会議の終了時間が次の会議の終了時間より遅い場合は、会議を次の会議の値に変更します.
このとき[0,6]は[1,4]に置き換えられるのでカウントは行われない.
print(meetingCnt)
このようにmeetingcntを印刷すればいいと思っていましたが、やはり間違っていました.
わかりませんが、会議の開始時間と会議の終了時間が同じであれば、
たとえば、[4,4],[5,5]にこの値が表示される場合があります.
会議の開始時間と終了時間が同じ場合は...
elif meeting[0] == meeting[1]:
        meeting = timeTable[i]
        meetingCnt += 1
したがって、例外的に、会議の開始時間と終了時間が同じである場合、追加コードは、次の会議を会議に入れてカウントする.

完全なコード

import sys
input = sys.stdin.readline

N= int(input())
timeTable = []

for i in range(N):
    timeTable.append(list(map(int,input().split())))

timeTable.sort()

meeting = timeTable[0]
meetingCnt = 1

for i in range(1, N):
    if meeting[0] < timeTable[i][0]:
        if meeting[1] <= timeTable[i][0]:
            meeting = timeTable[i]
            meetingCnt += 1
        elif meeting[1] >= timeTable[i][1]:
            meeting = timeTable[i]
    elif meeting[0] == meeting[1]:
        meeting = timeTable[i]
        meetingCnt += 1
        
print(meetingCnt)
会議の開始時間と会議の終了時間は同じで、これは不愉快な問題です.