본문 바로가기

알고리즘 문제

2018 카카오 블라인드 코딩 테스트 1차 무지의 먹방 라이브

단순히 풀면 효율성 탈락..

한번에 음식을 없애고 그만큼의 시간을 감소시키는 방법을 썼다.

이런 생각을 어떻게 하지

def solution(food_times, k):
    # food_times를 value 오름차순 후 index 오름차순
    times = sorted(enumerate(food_times), key=lambda k:(k[1], k[0]))
    before = 0
    length = len(times)
    for i, v in enumerate(times):
        diff_v = v[1] - before
        diff_l = length - i
        if diff_v != 0:
            past_time = diff_v * diff_l
            if k >= past_time:
                k -= past_time
                before = v[1]
            else:
                times = sorted(times[i:])
                print(times)
                return times[k % diff_l][0] + 1
    return -1


print(solution([3,5,1,6,5,3], 20))  # 4
print(solution([3, 1, 2], 5))  # 1
print(solution([6,4,5,5,3,4], 20))  # 3
print(solution([2,2,2],4))  # 2
print(solution([1],10))  # -1

 

출처 https://www.welcomekakao.com/learn/courses/30/lessons/42891

풀이 출처 https://www.youtube.com/watch?v=4MWxAt4fx5I&list=PL3-B256rKFGF72fjZDH66mC5HdpUlLy4p&index=4