-
250411_프로그래머스 #176962. 과제 진행하기알고리즘 2025. 4. 11. 02:02
문제
https://school.programmers.co.kr/learn/courses/30/lessons/176962
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드
def solution(plans): answer = [] plans.sort(key = lambda x : x[1]) # 시작시간이 빠른 순으로 정렬 stop = [] # 시간 내에 다 못한 과제 current = 0 # 현재 시간 for i in range(len(plans)): name, start, playtime = plans[i] start = start.split(':') start_time = int(start[0]) * 60 + int(start[1]) # 시간을 분으로 통일 if current > start_time: stop.append((plans[i - 1][0], current - start_time)) elif current <= start_time and i != 0: answer.append(plans[i - 1][0]) if stop: play = start_time - current while play > 0 and stop: s = stop.pop() if s[1] <= play: answer.append(s[0]) play -= s[1] else: stop.append((s[0], s[1] - play)) play = 0 current = start_time + int(playtime) if i == len(plans) - 1: answer.append(name) while stop: x = stop.pop() answer.append(x[0]) return answer
※ 완전 구현 문제! 처음 제출했을 때 24개 중에 6개만 '런타임에러'라서 당황했다 ㅜ 틀렸습니다도 아니고, 런타임 에러라 코드 보면서 확인해봤는데 while문에 조건을 하나 추가하지 않아서였다. 원래는 while play > 0 이렇게만 썼었는데 while play > 0 and stop 이라고 수정했더니 바로 통과했다. 그치 .. 시간이 남아도 멈춘 과제가 없을수도 있으니까 ..! 그래두 내가 원하는대로 구현은 한거같아서 나름 뿌듯 ^_^
'알고리즘' 카테고리의 다른 글
250409_프로그래머스 #150368. 이모티콘 할인행사 (0) 2025.04.09 250408_프로그래머스 #42890. 후보키 (0) 2025.04.08 250407_프로그래머스 #340212. [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지 (0) 2025.04.07 250402_프로그래머스 #140107. 점 찍기 (2) 2025.04.02 250401_프로그래머스 #172927. 광물 캐기 (0) 2025.04.01