티스토리 뷰
문제출처 - https://programmers.co.kr/learn/courses/30/lessons/42627
def solution(jobs):
answer = 0
start = 0 # 현재까지 진행된 작업 시간
length = len(jobs)
jobs = sorted(jobs, key=lambda x: x[1]) # 소요시간 우선 정렬
while len(jobs) != 0:
for i in range(len(jobs)):
if jobs[i][0] <= start:
start += jobs[i][1]
answer += start - jobs[i][0]
jobs.pop(i)
break
# 해당시점에 아직 작업이 들어오지 않았으면 시간 ++
if i == len(jobs) - 1:
start += 1
return answer // length
설명
1. jobs 배열은 소요시간을 기준으로 오름차순 정렬을 한다. 소요시간이 작을수록 각 작업들이 기다리는 시간이 줄어들기 때문이다.
2. jobs 배열이 empty가 될때까지 while문을 돌린다.
3. jobs 길이만큼 for문을 돌리면서 해당 작업의 요청시간이 start(현재까지 진행된 작업 시간)보다 작으면,
즉, 해당 작업이 진행된 시간보다 먼저 요청이 들어왔으면,
해당 작업을 진행시키고 jobs 배열에서 지워버린다.
'ALGORITHM > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 - 스킬트리(Level2) (0) | 2020.04.16 |
---|---|
[Python][힙] 프로그래머스 - 이중우선순위큐(LEVEL3) (0) | 2020.04.12 |
[Python][2019 KAKAO] 프로그래머스 - 실패율(LEVEL2) (0) | 2020.04.05 |
[Python][2019 KAKAO] 프로그래머스 - 후보키(LEVEL2) (0) | 2020.04.04 |
[Python][2020 KAKAO] 프로그래머스 - 자물쇠와 열쇠(LEVEL3) (3) | 2020.04.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 딕셔너리
- 괄호
- dictionary
- 우선순위큐
- 구현
- Permutation
- hash
- SW Expert
- 파이썬
- 문자열
- 프로그래머스
- Python
- programmers
- BOJ
- 2019 Kakao Blind Recruitment
- 힙
- 해시
- C++
- 문자열처리
- SWExpert
- left join
- 정렬
- 순열
- combination
- 완전탐색
- 백준
- 2020 KAKAO BLIND RECRUITMENT
- 코딩테스트
- 스택
- 재귀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함