티스토리 뷰
많이 배정하거나 선택하는 문제를 '활동 선택 문제(Activity Selection problem)'라고 한다.
이 문제가 그리디 알고리즘(탐욕알고리즘)의 전형적인 문제라고 한다.
수식으로 그려봤을 때 겹치는 것들을 선택하면 안되는 문제이기 때문에
1. 종료되는 시간을 기준으로 정렬을 했다. sort()함수의 인자 안에 람다를 써주고 기준을 넣어주면 된다.( 리스트의 1번째가 종료시간이므로 x[1]이라고 해줬다.)
2. 다음 순서의 시작이 앞에 것의 종료시간 안에 있다면 그것을 제외시킨다.(pop(0)으로 표현)
3. 겹치지 않는다면 cnt ++해주고 end를 갱신시켜준다.
#cnt =1로 초기화한 이유는 제일 빨리 끝나는 것을 선택하고 시작하기 때문
T = int(input())
for tc in range(1,T+1):
N = int(input())
dock = [list(map(int, input().split())) for _ in range(N)]
#끝나는 시간을 기준으로 정렬
dock.sort(key=lambda x : x[1])
cnt = 1
end = dock.pop(0) #맨 처음꺼 뽑음
#다음 시작이 앞의 끝나는 시간안에 있으면 삭제
while dock:
if dock[0][0] < end[1]:
dock.pop(0)
else:
cnt +=1
end = dock.pop(0) #갱신
print("#{} {}".format(tc,cnt))
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] 2819. 격자판의 숫자 이어붙이기 (0) | 2021.04.16 |
---|---|
[SWEA] 4366. 정식이의 은행업무 (0) | 2021.04.16 |
[SWEA] 5201. 컨테이너 운반 (0) | 2021.04.15 |
[SWEA] 10726. 이진수 표현 (0) | 2021.04.13 |
[SWEA] 5185. 이진수 (0) | 2021.04.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자바
- splide
- vue.js
- SSAFY퇴소
- 위클리챌린지2주차
- 파이썬
- 프로그래머스
- 세션 스토리지
- 안드로이드스튜디오
- javascript
- Pyhton
- 싸피
- git
- N과M
- DOM
- SWEA
- 독학
- SQL
- commit되돌리기
- 백준
- 비동기패턴
- 알고리즘
- SSAFY
- 트리
- AWS
- Python
- 배포
- vue
- Java
- django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함