728x90
문제 제목: 회의실 배정 (그리디)
문제 KEY POINT
회의실 배정이 최대가 되도록 구하면 되는 문제이다.
따라서 주어진 데이터에서 어떤 시간을 위주로 볼 것인가? 에대한 문제이다.
이 문제는 시작 시간이 중요한게 아니다.
회의가 끝나는 시간을 위주로 정렬하여, 빨리 끝나는 시간을 기준으로 봐야한다.
1. 입력 창 구현
n = int(input())
meet = []
for i in range(n):
m1, m2 = map(int,input().split())
meet.append([m1,m2])
2. lambda 함수를 이용하여 sorted 함수의 키 값 설정
list = sorted(list, key lambda x: (x[1],x[0])) 는 즉 x[1]의 값을 기준으로 오름차순 정렬을 하겠다는 코드이다.
sorted함수는 정렬하는데 default값으로 제일 앞에 있는 값 (0번째)에 있는 값을 기준으로 오름차순 정렬한다.
meet = sorted(meet, key = lambda x: (x[1],x[0])) # Key값을 설정하지 않으면 default 값으로 제일 앞의 값을 위주로 정렬됨
3. 끝나는 시간을 계속 업데이트 해준다.
end_time = 0
cnt = 0
for start, end in meet:
# 각각 정렬회의의 시작시간(start) 끝나는 시간(end)
if start >= end_time: #시작하는 시간이 end시간보다 크면
end_time = end #end_time update
cnt +=1
나의 풀이
n = int(input())
meet = []
for i in range(n):
m1, m2 = map(int,input().split())
meet.append([m1,m2])
meet = sorted(meet, key = lambda x: (x[1],x[0])) # Key값을 설정하지 않으면 default 값으로 제일 앞의 값을 위주로 정렬됨
end_time = 0
cnt = 0
for start, end in meet:
# 각각 정렬회의의 시작시간(start) 끝나는 시간(end)
if start >= end_time: #진행한 시간이 end시간보다 크면
end_time = end
cnt +=1
print(cnt)
※ 알아야 할 것
- lambda 함수는 익명함수로, sorted함수에서는 key값을 정할 때 자주 이용되는 함수이다.
728x90
'coding test - python > 기본기 문제' 카테고리의 다른 글
문제 / 이진 트리 순회(깊이 우선 탐색) / Python 파이썬 (0) | 2022.08.03 |
---|---|
문제 / 재귀 함수를 이용한 이진수 출력 / Python 파이썬 (0) | 2022.08.03 |
문제 / 최대힙 / Python 파이썬 (0) | 2022.07.29 |
문제 / 최소힙 / Python 파이썬 (0) | 2022.07.29 |
문제 / 랜선 자르기 / Python 파이썬 (0) | 2022.07.27 |