728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 회의 시간이 겹치면 안 되므로 시작하는 시간과 끝나는 시간이 중요하다.
최대한 많은 회의를 진행해야 하므로 회의의 끝나는 시간이 짧은 것부터 회의를 시작해야 뒤에 이어지는 회의가 최대한으로 이루어질 수 있다.
하지만 끝나는 시간이 같다면 시작하는 시간을 봐야 하는데, 시작하는 시간과 끝나는 시간이 같을 경우 회의를 더 많이 할 수 있다. 하여 끝나는 시간이 같다면 시작하는 시간이 더 앞선 회의부터 진행한다.
- sys.stdin.readline() 함수를 활용하기 위해 sys 모듈을 불러온다. import sys
- 회의의 개수를 입력받는다. N = int(sys.stdin.readline())
- 각 회의별 정보를 저장할 리스트를 생성한다. info = list()
- 회의의 개수만큼 반복하며 for i in range(N)
- 각 시작 시간과 종료 시간을 입력받고 리스트로 추가한다. info.append(list(map(int, sys.stdin.readline().split())))
- 저장한 회의의 정보를 시작 시간 기준으로 오름차순 정렬한다. info.sort(key=lambda x: x[0])
- 시작 시간 기준으로 정렬한 정보를 종료 시간 기준으로 다시 오름차순 정렬한다. info.sort(key=lambda x: x[1])
- 진행할 수 있는 회의의 개수를 저장할 변수를 생성하고 초기화한다. count = 0
- 회의별 종료 시간을 저장할 변수를 생성하고 초기화한다. end = 0
- 정렬한 회의를 하나씩 추출하여 for i in info
- 만약 추출한 회의의 시작 시간이 이전 회의의 종료 시간보다 이전이면 if (end > i[0])
- 해당당 회의는 진행할 수 없으므로 다음 회의로 넘어간다. continue
- 반면에 추출한 회의의 시작 시간이 이전 회의의 종료 시간과 같거나 그다음이면 else
- 해당 회의는 진행할 수 있으므로 진행할 수 있는 회의의 개수에 1을 추가하고 count += 1
- 종료 시간을 해당 회의 종료 시간으로 변경한다. end = i[1]
- 모든 회의를 검토하고 난 뒤, 회의의 최대 개수를 출력한다. print(count)
반응형
3. 소스코드
import sys
N = int(sys.stdin.readline())
info = list()
for i in range(N):
info.append(list(map(int, sys.stdin.readline().split())))
info.sort(key=lambda x: x[0])
info.sort(key=lambda x: x[1])
count = 0
end = 0
for i in info:
if (end > i[0]):
continue
else:
count += 1
end = i[1]
print(count)
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 1697번 : 숨바꼭질 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.28 |
---|---|
[백준] 10845번 : 큐 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.27 |
[백준] 11653번 : 소인수분해 - 파이썬(Python) - 우당탕탕 개발자되기 프로젝트 (0) | 2023.07.27 |
[백준] 1018번 : 체스판 다시 칠하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.26 |
[백준] 2579번 : 계단 오르기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.25 |
[백준] 10814번 : 나이순 정렬 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.24 |
[백준] 1149번 : RGB거리 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.23 |
[백준] 10773번 : 제로 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.21 |