Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 카카오
- 완전탐색
- dau 3만명
- 프로그래머스
- 결제서비스
- 베타적락
- 디버깅
- AWS
- 누적합
- langgraph
- ipo 매매자동화
- 크롤링
- 아키텍쳐 개선
- 셀러리
- 이분탐색
- 구현
- 백준
- next-stock
- spring event
- 관측가능성
- docker
- 알람시스템
- gRPC
- BFS
- ai agent
- 몽고 인덱스
- JPA
- 쿠키
- 추천 검색 기능
- piplining
Archives
- Today
- Total
코딩관계론
[프로그래머스] 무지의 먹방 라이브 본문
반응형
아이디어 도출 방법
1. 먼저 효율성을 생각하지 않고 정확성 위주로 문제를 해결하려고 했다.
- 방송이 중단된 시간(k)만큼 돌면서 food_time[index]의 시간을 1초씩 감소시켜준다.
idx = 0
for i in range(k):
remove_food_time(food_time[idx])
idx += 1
2. 순차적으로 1초씩 줄이면 탈락하는 문제로 한번에 하나씩 삭제할 수 없을까 생각을 했다.
- 한 번에 FOOD_TIME [idx]의 시간을 0으로 만들 수 있다면 연산의 복잡도가 배열 길이에 따라 변한다.
- 그럼 어떤 Index가 먼저 0이 될까?
- 답은 간단하게 FOOD_TIME 중 최소 값이 먼저 사라진다
- 그럼 해당 Index를 0으로 만들 때 필요한 시간 계산은 어떻게 할 까?
- FOOD_TIME [index] * len(FOOD_TIME)을 하면 필요한 시간이 나온고 K에서 해당 시간을 차감해주면 된다.
- 또 다른 문제는 FOOD_TIME [index]의 시간이 K보다 크다면 K % len(FOOD_TIME)가 정답이 된다.
구현 포인트
1. 모든 배열의 시간을 더해도 K가 큰 경우에는 -1을 반환
2. 사용한 시간을 누적해야 한다. -> 다른 인덱스에는 해당 시간이 반영되지 않았기 때문이다.
코드
import heapq
def solution(food_times, k):
if sum(food_times) <= k:
return - 1
previous = 0
total = len(food_times)
heap = []
for i in range(len(food_times)):
heapq.heappush(heap, [food_times[i], i])
#previois를 꼭 더해주자
while heap:
min_time, idx = heapq.heappop(heap)
min_time -= previous
if min_time * total < k:
previous += min_time
food_times[idx] = 0
k -= min_time * total
else:
need_forward = k % total
forward = 0
for idx in range(len(food_times)):
if food_times[idx]:
if forward == need_forward:
answer = idx + 1
forward += 1
break
total -= 1
return answer
if __name__ == "__main__":
food_times = [3, 1, 2]
k = 5
print(solution(food_times, k))
후기
좀 재미난 문제였다. 생각해보니 그리디 문제였다;
반응형
'개발 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 카카오 셔틀버스 풀이 (1) | 2022.12.12 |
---|---|
[프로그래머스] 길 찾기 게임 (0) | 2022.11.27 |
[프로그래머스] 카드 짝 맞추기 (1) | 2022.11.13 |
[프로그래머스] 광고 삽입 (2) | 2022.11.06 |
[프로그래머스] 순위 검색(python) (1) | 2022.10.31 |