ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 디스크 컨트롤러
    Programming/Programmers 문제풀이 2020. 12. 24. 10:52
    728x90

    프로그래머스 사이트에 있는 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
Designed by Tistory.