coding test - python/기본기 문제

문제 / 회의실 배정 (그리디) / Python 파이썬

sillon 2022. 8. 2. 22:54
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
반응형