-
디스크 컨트롤러Programming/Programmers 문제풀이 2020. 12. 24. 10:52728x90
프로그래머스 사이트에 있는 heap 관련 문제 중에 두번째 문제
문제 설명을 하면, 요청시간부터 총 걸린 시간을 알아내고, 평균이 가장 작게 하는 문제
문제 구분이 heap이어서 생각하다 보니 heap이 필요할까라는 생각을 해서 list로 무식하게 풀기로함
구현 아이디어
[[0,3], [1,9], [2,6]] 이 들어오면 맨 처음걸 무조건 넣고 시작
[[1,9], [2,6]] 중에서 [0,3] 의 끝나는 시간에서 가장 짧은것을 찾아서 그 다음에 시작
같은 시작이 존재한다면 끝나는 시간이 짧은것을 선택하도록 한다.
그렇게 된다면, [0,3], [2,6], [1,9]의 순으로 진행되면 평균이 가장 짧다.
def solution(jobs): answer = 0 length = len(jobs) result = [] result.append(jobs[0]) jobs.pop(0) while jobs: minValue = 100000 temp_list = [] pos = 0 for i, item in enumerate(jobs): if result[-1][1] - item[0] < 0: continue if result[-1][1] - item[0] < minValue: minValue = result[-1][1] - item[0] temp_list = item pos = i elif result[-1][1] - item[0] == minValue: if temp_list[1] > item[1]: minValue = result[-1][1] - item[0] temp_list = item pos = i result.append(temp_list) jobs.pop(pos) cur = 0 for i, item in enumerate(result): if i > 0: answer += item[1] + cur - item[0] cur += item[1] else: answer += item[1] - item[0] cur = answer return answer / length
하지만 결과는 ...실패
어디가 틀린것일까?.... 런타임 에러도 잡아야하겠지만, 테스트 케이스중에 실패한것이 있어 조금 더 해보기로 한다,.
'Programming > Programmers 문제풀이' 카테고리의 다른 글
백준 14888 - 연산자 끼워넣기 (0) 2022.04.25 백준 1339 - 단어 수학 (0) 2022.04.24 메뉴 리뉴얼 (0) 2021.03.08 신규 아이디 추천 (0) 2021.03.08