Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Python
- DP
- softeer
- Stack
- Lv. 1
- 소프티어
- group by
- bfs
- 타입스크립트
- C언어
- programmers
- 문자열
- level3
- javascript
- 다이나믹프로그래밍
- 스택
- SQL 고득점 KIT
- 브루트포스
- Java
- 파이썬
- Lv. 3
- Typescript
- level 3
- Lv. 2
- Dynamic Programming
- dfs
- 프로그래머스
- 자바스크립트
- 너비 우선 탐색
- Lv. 0
Archives
- Today
- Total
몸과 마음이 건전한 SW 개발자
Softeer Level 3 강의실 배정 Python [반례 포함] 본문
문제 링크
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에서 강의실 배정하는 문제를 풀어봤지만 오랜만에 풀어보니 조금 오래 걸렸다.
- 람다식과 그리디 알고리즘을 다시 공부해야겠다.
'알고리즘' 카테고리의 다른 글
프로그래머스 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 |