programmers.co.kr/learn/courses/30/lessons/42627#
def solution(jobs) :
answer, endtime, L = 0, 0, len(jobs)
jobs.sort()
while jobs :
job, index, around = jobs[0], 0, 0
around = job[1]+job[0] if endtime<=job[0] else job[1] + (endtime-job[0])
for i in range(1,len(jobs)) :
temp = jobs[i][1] + jobs[i][0] if endtime<jobs[i][0] else jobs[i][1] + (endtime-jobs[i][0])
if around > temp : job, around, index = jobs[i], temp, i
answer += job[1] if endtime<job[0] else endtime - job[0] + job[1]
endtime = job[0]+job[1] if endtime<job[0] else endtime+job[1]
print(job,answer, endtime, around)
del jobs[index]
return int(answer/L)
정확성 테스트
테스트 1 〉 | 실패 (11.74ms, 10.3MB) |
테스트 2 〉 | 실패 (10.31ms, 10.3MB) |
테스트 3 〉 | 실패 (7.76ms, 10.4MB) |
테스트 4 〉 | 실패 (6.65ms, 10.3MB) |
테스트 5 〉 | 실패 (11.26ms, 10.3MB) |
테스트 6 〉 | 실패 (0.10ms, 10.3MB) |
테스트 7 〉 | 실패 (6.41ms, 10.3MB) |
테스트 8 〉 | 실패 (3.87ms, 10.3MB) |
테스트 9 〉 | 실패 (1.27ms, 10.3MB) |
테스트 10 〉 | 실패 (15.55ms, 10.3MB) |
테스트 11 〉 | 실패 (0.06ms, 10.3MB) |
테스트 12 〉 | 통과 (0.05ms, 10.3MB) |
테스트 13 〉 | 실패 (0.05ms, 10.3MB) |
테스트 14 〉 | 실패 (0.03ms, 10.3MB) |
테스트 15 〉 | 통과 (0.03ms, 10.4MB) |
테스트 16 〉 | 통과 (0.03ms, 10.4MB) |
테스트 17 〉 | 통과 (0.02ms, 10.3MB) |
테스트 18 〉 | 실패 (0.02ms, 10.3MB) |
테스트 19 〉 | 통과 (0.03ms, 10.2MB) |
테스트 20 〉 | 통과 (0.01ms, 10.3MB) |
채점 결과
정확성: 30.0
합계: 30.0 / 100.0
실화니?
테케 공유 된거
print(solution([[0, 10], [2, 10], [9, 10], [15, 2]]), 14)
print(solution([[0, 10], [2, 12], [9, 19], [15, 17]]), 25)
print(solution([[0, 3], [1, 9], [2, 6]]), 9)
print(solution([[0, 1]]), 1)
print(solution([[1000, 1000]]), 1000)
print(solution([[0, 1], [0, 1], [0, 1]]), 2)
print(solution([[0, 1], [0, 1], [0, 1], [0, 1]]), 2)
print(solution([[0, 1], [1000, 1000]]), 500)
print(solution([[100, 100], [1000, 1000]]), 500) => 550 아님??? ㅜㅠㅠㅠ 이거 말고 다 맞는데,,
print(solution([[10, 10], [30, 10], [50, 2], [51, 2]]), 6)
print(solution([[0, 3], [1, 9], [2, 6], [30, 3]]), 7)
heapq로 구현
import heapq
def solution(jobs) :
answer, endtime, L = 0, 0, len(jobs)
jobs.sort()
endtime = jobs[0][0]
heap = []
while True :
if not heap and not jobs : break
for i in jobs :
if not jobs : break
if i[0] > endtime : break
else :
heapq.heappush(heap,(i[1],i[0]))
del jobs[jobs.index(i)]
while True :
if not heap and not jobs : break
if jobs :
if jobs[0][0] <= endtime : break
if not heap :
endtime = jobs[0][0]
break
if heap :
job = heapq.heappop(heap)
answer += job[0] + (endtime - job[1])
endtime += job[0]
return int(answer/L)
정확성 테스트
테스트 1 〉 | 통과 (1.74ms, 10.3MB) |
테스트 2 〉 | 통과 (1.25ms, 10.3MB) |
테스트 3 〉 | 통과 (0.78ms, 10.3MB) |
테스트 4 〉 | 통과 (0.60ms, 10.2MB) |
테스트 5 〉 | 통과 (0.95ms, 10.3MB) |
테스트 6 〉 | 통과 (0.04ms, 10.4MB) |
테스트 7 〉 | 통과 (0.66ms, 10.3MB) |
테스트 8 〉 | 통과 (0.77ms, 10.2MB) |
테스트 9 〉 | 통과 (0.19ms, 10.3MB) |
테스트 10 〉 | 통과 (1.48ms, 10.2MB) |
테스트 11 〉 | 통과 (0.02ms, 10.3MB) |
테스트 12 〉 | 통과 (0.02ms, 10.2MB) |
테스트 13 〉 | 통과 (0.02ms, 10.3MB) |
테스트 14 〉 | 통과 (0.02ms, 10.3MB) |
테스트 15 〉 | 통과 (0.02ms, 10.3MB) |
테스트 16 〉 | 통과 (0.01ms, 10.3MB) |
테스트 17 〉 | 통과 (0.01ms, 10.2MB) |
테스트 18 〉 | 통과 (0.02ms, 10.3MB) |
테스트 19 〉 | 통과 (0.02ms, 10.3MB) |
테스트 20 〉 | 통과 (0.01ms, 10.3MB) |
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
'코테' 카테고리의 다른 글
[백준] <8958번 OX퀴즈> 파이썬 (0) | 2021.04.07 |
---|---|
[프로그래머스] <가장 큰 정사각형 찾기> 파이썬 (0) | 2021.04.06 |
[프로그래머스] <카펫> 파이썬 (0) | 2021.04.05 |
[프로그래머스] <풍선 터트리기> 파이썬 (0) | 2021.04.05 |
[프로그래머스] <소수 찾기> 파이썬 (0) | 2021.04.05 |