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 |
Tags
- pytest
- ORM
- Python
- Query
- Programmers
- Django
- Unit Testing
- Q objects
- stateful
- AWS
- combinations
- postreSQL
- greedy
- ws
- Gunicorn
- codecov
- HTTP 완벽 가이드
- Git
- Bruteforce
- SQL
- algorithm
- utils
- permutations
- 백준
- dictionary
- TDD
- stateless
- was
- Stack
- stack&que
Archives
- Today
- Total
해피 코딩!
[백준] 회의실 배정 본문
def solution(lst):
cnt = 1
lst.sort(key = lambda x:(x[1], x[0]))
end_time = lst[0][1]
for i in range(1, len(lst)):
if lst[i][0] >= end_time:
cnt+=1
end_time = lst[i][1]
return cnt
lst = []
limit = int(input())
for _ in range(limit):
lst.append(list(map(int, input().split(' '))))
print(solution(lst))
탐욕 알고리즘의 쉬운 접근 방식이 아직 숙달되지 않은 것 같다.
문제를 너무 어렵게 생각하는 경향이 있으며, 다른 사람의 코드를 보았을 때 문제를
해석하는 방식에 있어서 많은 자책을 하게된다.
탐욕 알고리즘의 특성인 매 순간 최적의 해를 찾아내는 판단에 아쉬움을 느낀 문제이다.
기존에 시행착오를 겪었던 코드는
def solution(lst):
cnt = 0
times = []
for i in range(24):
times.append([i, i+1])
# 시간의 차이 기준으로 정렬
sorted_lst = sorted(lst, key=lambda x:x[1]-x[0])
for time in sorted_lst:
if time[0]==time[1]:
cnt+=1
continue
for t in range(time[0], time[1]+1):
if [t, t+1] not in times:
continue
return cnt
이러한 형식으로 24시간을 전부 만들어 놓고, 해당하는 시간을 빼는 판단이었는데 더 많은 반복문을 소요하여 시간복잡도가 증가하는 이슈로 다른 풀이를 작성하게 되었다.
'알고리즘' 카테고리의 다른 글
[프로그래머스] level 2 구명보트 (0) | 2020.12.24 |
---|---|
[백준] 로프 2217번 (0) | 2020.12.24 |
[백준] 동전 0 (0) | 2020.12.23 |
[프로그래머스] 큰 수 만들기 (0) | 2020.12.19 |
순열과 조합 - combinations, permutations (0) | 2020.12.19 |
Comments