티스토리 뷰

코딩테스트

무지의 먹방 라이브

ajaa 2024. 11. 22. 19:22

📌문제

https://school.programmers.co.kr/learn/courses/30/lessons/42891

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

📌풀이

모든 음식을 시간 기준으로 정렬

시간이 적게 걸리는 음식부터 제거해나가는 방식

최소값을 빠르게 추출하기 위해 우선 순위 큐 사용

📌코드

import heapq

def solution(food_times, k):
    #전체 음식을 먹는 시간의 합보다 k가 크거나 같다면 -1
    if sum(food_times)<=k:
        return -1
    
    #시간이 작은 음식부터 빼야하므로 우선순위 큐 사용
    q=[]
    for i in range(len(food_times)):
        #(음식 시간, 음식 번호) 형태로 삽입
        heapq.heappush(q, (food_times[i], i+1))
        
    sum_value=0 #누적 섭취 시간
    previous=0 #직전에 다 먹은 음식 시간
    length=len(food_times) #남은 음식 개수
    
    #sum_value+(현재 음식 시간 - 이전 음식 시간) * 현재 음식 개수와 k 비교
    while sum_value+((q[0][0]-previous)*length)<=k:
        now=heapq.heappop(q)[0]
        sum_value+=(now-previous)*length
        length-=1 #다 먹은 음식 제외
        previous=now #이전 음식 시간 재설정
        
    #남은 음식 중 몇 번째 음식인지 출력
    result=sorted(q, key=lambda x: x[1]) #음식의 번호 기준으로 정렬
    return result[(k -sum_value) % length][1]

 

📌참고

https://g.co/kgs/eyd5SSd

 

이것이 취업을 위한 코딩 테스트다 with 파이썬

IT 취준생이라면 누구나 입사하고 싶은 카카오・삼성전자・네이버・라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다! IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년

www.google.com

 

 

'코딩테스트' 카테고리의 다른 글

문자열 재정렬  (0) 2024.11.25
럭키 스트레이트  (0) 2024.11.23
볼링공 고르기  (2) 2024.11.21
만들 수 없는 금액  (4) 2024.11.20
문자열 뒤집기  (0) 2024.11.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함