접근 핵심 :
- 빨리 끝나는 회의 순서대로 정렬을 해야 한다 -> 빨리 끝날수록 뒤에서 고려할 수 있는 수가 많아짐
- 정렬 시 sort(list, key = lambda x : x[n])를 사용할 수 있음 -> 기준을 여러 개 적용해서 한번에 정렬할 수도 있음 sort(list, key = lambda x : (x[m], a[n])) *key에 여러 인자를 준다
이건 알겠는데

이렇게 해도

이렇게 해도
왜 계속

3이 나오는겨
4나와야 되는데
뭐가 문제지

요게 문제였다.
끝나는 시간을 기준으로 우선 정렬해주고, 끝나는 시간이 같은 경우를 위해 시작 시간을 그 다음으로 정렬해주어야 하는데, 그렇게 해줄려면 x[1], x[0] <- 이 순서가 되어야 하는게 맞다.

n = int(input())
time = []
for i in range(n):
start, end = map(int, input().split())
time.append([start, end])
time.sort(key = lambda x: (x[1], x[0])) #끝나는 시간을 기준으로 먼저 정렬
count = 1
last_end = time[0][1]
for i in range(1, n):
if time[i][0] >= last_end:
count += 1
last_end = time[i][1]
print(count)
참고 :
https://hei-jayden.tistory.com/33
[백준 파이썬] # 1931 회의실 배정
Siver II # 1931 회의실 배정 그리디 알고리즘 유형 링크 : https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 N = int(input()) time = [] for i in range(
hei-jayden.tistory.com
고로 이 블로그에 나온 코드에서 람다 부분 정렬 순서를 바꿔주어야 한다. (백준 제출도 해봤는데 이게 맞음)
헷갈릴 여지가 있으니 이거보다는 밑의 블로그를 참고하는 것이 더 좋을 듯하다.
[백준알고리즘] 1931번: 회의실배정 -Python
[백준알고리즘] 1931번: 회의실배정 -Python https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 아랫부분에 새로 푼 방식의 풀이도 추가했다. 이번
suri78.tistory.com
'알고리즘 > 백준 풀이' 카테고리의 다른 글
[백준/Python] #1260 : DFS와 BFS - DFS/BFS (1) | 2023.04.13 |
---|---|
[백준/Python] #2941 : 크로아티아 알파벳 - 구현 (0) | 2023.03.23 |
[백준/Python] #13305 : 주유소 - 그리디 (0) | 2023.03.23 |
<미해결> [백준/Python] #1316 : 그룹 단어 체커 - 구현 (0) | 2023.03.23 |
[백준/Python] #4673 : 셀프 넘버 - 구현 (1) | 2023.03.23 |
접근 핵심 :
- 빨리 끝나는 회의 순서대로 정렬을 해야 한다 -> 빨리 끝날수록 뒤에서 고려할 수 있는 수가 많아짐
- 정렬 시 sort(list, key = lambda x : x[n])를 사용할 수 있음 -> 기준을 여러 개 적용해서 한번에 정렬할 수도 있음 sort(list, key = lambda x : (x[m], a[n])) *key에 여러 인자를 준다
이건 알겠는데

이렇게 해도

이렇게 해도
왜 계속

3이 나오는겨
4나와야 되는데
뭐가 문제지

요게 문제였다.
끝나는 시간을 기준으로 우선 정렬해주고, 끝나는 시간이 같은 경우를 위해 시작 시간을 그 다음으로 정렬해주어야 하는데, 그렇게 해줄려면 x[1], x[0] <- 이 순서가 되어야 하는게 맞다.

n = int(input())
time = []
for i in range(n):
start, end = map(int, input().split())
time.append([start, end])
time.sort(key = lambda x: (x[1], x[0])) #끝나는 시간을 기준으로 먼저 정렬
count = 1
last_end = time[0][1]
for i in range(1, n):
if time[i][0] >= last_end:
count += 1
last_end = time[i][1]
print(count)
참고 :
https://hei-jayden.tistory.com/33
[백준 파이썬] # 1931 회의실 배정
Siver II # 1931 회의실 배정 그리디 알고리즘 유형 링크 : https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 N = int(input()) time = [] for i in range(
hei-jayden.tistory.com
고로 이 블로그에 나온 코드에서 람다 부분 정렬 순서를 바꿔주어야 한다. (백준 제출도 해봤는데 이게 맞음)
헷갈릴 여지가 있으니 이거보다는 밑의 블로그를 참고하는 것이 더 좋을 듯하다.
[백준알고리즘] 1931번: 회의실배정 -Python
[백준알고리즘] 1931번: 회의실배정 -Python https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 아랫부분에 새로 푼 방식의 풀이도 추가했다. 이번
suri78.tistory.com
'알고리즘 > 백준 풀이' 카테고리의 다른 글
[백준/Python] #1260 : DFS와 BFS - DFS/BFS (1) | 2023.04.13 |
---|---|
[백준/Python] #2941 : 크로아티아 알파벳 - 구현 (0) | 2023.03.23 |
[백준/Python] #13305 : 주유소 - 그리디 (0) | 2023.03.23 |
<미해결> [백준/Python] #1316 : 그룹 단어 체커 - 구현 (0) | 2023.03.23 |
[백준/Python] #4673 : 셀프 넘버 - 구현 (1) | 2023.03.23 |