반응형
문제
구현
이 문제는 따로 쉽게 푸는 방법이 없는 것 같아 문제를 그대로 따라가면서 구현을 하면 된다.
우선 기본적으로 plans를 시간순서로 sorting 한 후 시작하는 게 좋다.
코드
def solution(plans):
plans = sorted(plans, key=lambda x : x[1])
todostack = []
answer = []
nowtime = 0
beforetime = -1
for i in range(len(plans)):
h,m = plans[i][1].split(':')
plans[i][1] = int(h)*60+int(m)
if i>0:
remainingTime = plans[i][1] - plans[i-1][1]
if remainingTime - int(plans[i-1][2]) >=0:
answer.append(plans[i-1][0])
remainingTime -= int(plans[i-1][2])
while remainingTime>0 and len(todostack)>0:
p = todostack.pop()
if p[1] <= remainingTime:
remainingTime-=p[1]
answer.append(p[0])
else:
p[1]-=remainingTime
todostack.append(p)
break
else:
todostack.append([plans[i-1][0], int(plans[i-1][2])-(plans[i][1]-plans[i-1][1])])
answer.append(plans[-1][0])
while todostack:
p = todostack.pop()
answer.append(p[0])
return answer
다른 풀이
한 가지 방법이 더 있는 것 같은데 정리가 안돼서 추후에 시도해보려고 한다.
반응형
'Coding Test > Python' 카테고리의 다른 글
[프로그래머스] 바탕화면 정리 Python 풀이 (0) | 2023.04.06 |
---|---|
[프로그래머스] 덧칠하기 Python 풀이 (0) | 2023.04.06 |
[프로그래머스] 연속 펄스 부분 수열의 합 Python 풀이 (0) | 2023.03.24 |
[Codility] Carol of the Code Python (코드 업데이트) (1) | 2023.03.13 |
[프로그래머스] 혼자서 하는 틱택토 Python 풀이 (6) | 2023.03.09 |
댓글