BOJ : 회의실 배정 [1931]

재현·2021년 5월 27일
0
post-custom-banner

1. 문제


한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.

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

2. 아이디어


  • mine(fail)
    1. 입력을 받고 [회의시작(start), 회의끝(end), 회의시간(end-start)]
    2. 회의 시작 시간을 기준으로 정렬한다.
    3. 회의끝 시간이 가장 이르면서 회의 시간이 긴 회의를 선택한다.
    4. 그 후에는 선택된 회의끝 시간보다 크거나 같은 회의시작 시간을 갖는 회의 중 3번 조건에 만족하는 회의를 고른다.
      이때마다 카운트한 후 마무리.

      코딩 망함. 하.. 몇 시간 했는데 코딩 못함 ..

  • mine(code), clone(idea)
    1. 입력을 받는다. [회의시작(start), 회의끝(end)]
    2. 회의 시작 시간을 기준으로 정렬한다.
    3. 회의 끝 시간을 기준으로 한번 더 정렬한다.
    4. 비교할 회의를 첫 회의로 받는다.
    5. 회의 끝 시간보다 큰 회의 시작 시간이 나오면 count해준 후 비교할 회의를 업데이트 한다.

출처 : https://pacific-ocean.tistory.com/236#recentEntries

3. 코드


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)
profile
성장형 프로그래머
post-custom-banner

0개의 댓글