Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- dfs
- Dynamic Programming
- Lv. 1
- Lv. 3
- 너비 우선 탐색
- Baekjoon
- bfs
- softeer
- level 3
- group by
- join
- 백준
- DP
- 깊이 우선 탐색
- SQL
- LEVEL 2
- 티스토리챌린지
- 파이썬
- 오블완
- Python
- programmers
- Lv. 2
- javascript
- Java
- 소프티어
- 자바스크립트
- SQL 고득점 KIT
- 동적계획법
- Lv. 0
- 프로그래머스
Archives
- Today
- Total
몸과 마음이 건전한 SW 개발자
Softeer Level 3 강의실 배정 Python [반례 포함] 본문
728x90
문제 링크
https://softeer.ai/practice/6291
Softeer - 현대자동차그룹 SW인재확보플랫폼
김교수는 강의실 1개에 최대한 많은 강의를 배정하려고 한다. 배정된 강의는 서로 겹치지 않아야 하며 수업시간의 길이와 상관없이 최대한 강의를 많이 배정하라. 단, 두 강의의 시작시간과 종
softeer.ai
정답 코드
import sys
input = sys.stdin.readline
N = int(input().strip())
classes = sorted([list(map(int, input().split())) for _ in range(N)], key=lambda x: (x[1], x[0]))
maxCnt = 1
nowEnd = classes[0][1]
for i in range(1, N):
next = classes[i]
if nowEnd <= next[0]:
nowEnd = next[1]
maxCnt += 1
print(maxCnt)
풀이 방법
- 처음 강의 시간을 정렬해서 받아야 합니다.
- 여기서 정렬은 강의 시간의 끝나는 시각을 기준으로 오름차순 정렬한 다음
- 겅의 시간의 시작하는 시각을 기준으로 오름차순 정렬합니다.
- 정렬 이후에는 이제 가장 앞에 있는 강의시간을 기준으로 끝나는 시간을 비교해주면서 계산하면 됩니다.
- next[0]은 다음 강의시간의 시작시간입니다.
반례
6
1 2
2 10
2 3
3 5
3 4
4 10
6
1 2
2 3
3 8
4 5
5 6
5 10
6
1 10
1 4
2 5
3 6
4 8
3 4
3
1 100
2 3
3 4
2
2 10
2 10
1
1 2
3
2 4
4 5
99 100
느낀점
- 전에 백준이나 SWEA에서 강의실 배정하는 문제를 풀어봤지만 오랜만에 풀어보니 조금 오래 걸렸다.
- 람다식과 그리디 알고리즘을 다시 공부해야겠다.
728x90
'알고리즘' 카테고리의 다른 글
프로그래머스 Lv2 JadenCase 문자열 만들기 Python (0) | 2023.12.11 |
---|---|
프로그래머스 Lv2 파일명 정렬 Python (0) | 2023.12.11 |
Softeer Level 3 징검다리 Python (4) | 2023.12.07 |
프로그래머스 [Lv. 3] 불량 사용자 Python (0) | 2023.09.17 |
프로그래머스 Lv2 문자열 압축 Python (2) | 2023.09.16 |