https://www.acmicpc.net/problem/1931
이 문제는 그리디 알고리즘 문제이다. 그리디 알고리즘은 생각보다 아주 간단하다. 문제를 풀어나가는 과정, 즉 해당 단계에서 어떤것이 가장 좋은 값인지 알아내는 과정이다. 또한, 대개 그리디 알고리즘은 정렬문제이기 때문에 정렬을 한 후에 가장 좋은 값을 찾아내는 것이 중요하다.
- 입력 받은 수를 정렬해주기 위해 배열에 넣어준다.
이때 시작시간과 끝시간을 같은 묶음으로 배열에 넣어준다.
- 회의실 끝나는 시간을 기준을 정렬을 해준다.
ex ) a.sort(key = lambda x: (x[1], x[0]))
- 정렬을 한 배열에서 다음과 같은 조건처럼 반복해주며 횟수를 세어주면 된다.
끝나는 시간 <= 다음 시작시간 -> cnt += 1
끝나는 시간 > 다음 시작시간 -> x
이때, 끝나는 시간값을 담아내는 tmp라는 변수를 지정해야한다.
n = int(input())
a = []
# 입력받은 수를 튜플형태로 배열에 담기
for i in range(n):
s, e = map(int, input().split())
a.append((s, e))
# 끝나는시간 기준으로 정렬
a.sort(key = lambda x: (x[1], x[0]))
cnt = 0
tmp = 0
# s는 시작시간, e는 끝나는시간
for s, e in a:
if tmp <= s:
cnt += 1
tmp = e
print(cnt)