한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.
출처 : https://www.acmicpc.net/problem/1931
- mine(fail)
- 입력을 받고 [회의시작(start), 회의끝(end), 회의시간(end-start)]
- 회의 시작 시간을 기준으로 정렬한다.
- 회의끝 시간이 가장 이르면서 회의 시간이 긴 회의를 선택한다.
- 그 후에는 선택된 회의끝 시간보다 크거나 같은 회의시작 시간을 갖는 회의 중 3번 조건에 만족하는 회의를 고른다.
이때마다 카운트한 후 마무리.코딩 망함. 하.. 몇 시간 했는데 코딩 못함 ..
- mine(code), clone(idea)
- 입력을 받는다. [회의시작(start), 회의끝(end)]
- 회의 시작 시간을 기준으로 정렬한다.
- 회의 끝 시간을 기준으로 한번 더 정렬한다.
- 비교할 회의를 첫 회의로 받는다.
- 회의 끝 시간보다 큰 회의 시작 시간이 나오면 count해준 후 비교할 회의를 업데이트 한다.
출처 : https://pacific-ocean.tistory.com/236#recentEntries
mine(fail)
ㄹㅇ ㅋㅋ from operator import itemgetter n = int(input()) arr = [] count = 0 index = 0 update = False for _ in range(n): a, b = map(int, input().split()) arr.append([a, b ,b-a]) arr.sort(key=itemgetter(0)) # arr.insert(0, [0,0,0]) for i in arr: print(i) # while index < n: # room = arr[index] # for i in range(index+1, n): # if room[1] <= arr[i][0]: # if room[1] > arr[i][1]: # room = arr[i] # index += 1 # update = True # elif room[1] == arr[i][1] and room[2] < arr[i][2]: # room = arr[i] # index += 1 # update = True # else: # continue # if not update: # index += 1 # print(index) # print(room) # count += 1 # print(room) # print(count)
mine(code), clone(idea)
from operator import itemgetter n = int(input()) arr = [] count = 1 for _ in range(n): arr.append(list(map(int, input().split()))) arr.sort(key=itemgetter(0)) arr.sort(key=itemgetter(1)) room = arr[0] for i in range(1, n): if room[1] <= arr[i][0]: room = arr[i] count += 1 print(count)