inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

38군데 합격 비법, 2026 코딩테스트 필수 알고리즘

4-9. 4주차 끝 & 숙제 설명

4-9. 4주차 끝 & 숙제 설명 중 첫번째 농심 라면 공장 문제 질문입니다.

해결된 질문

239

이가희

작성한 질문수 2

0

1. 현재 학습 진도

 

2. 어려움을 겪는 부분

 

3. 시도해보신 내용

 

이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊

python 코딩-테스트 알고리즘 data-structure

답변 1

0

딩코딩코

안녕하세요 가희님!! 좋은 질문 감사드립니다!

다음과 같이 답변드립니다

 

질문 1. while stock <= k 라는 반복문에서 max_heap을 왜 초기화하지 않나요?

max_heap을 초기화하지 않는 이유는, 이전에 추가된 공급량을 계속 활용하기 위해서입니다.
즉, stock을 업데이트하기 전에 들어온 공급량들과 이후에 새롭게 추가된 공급량들 중에서 최댓값을 뽑아야 하기 때문입니다.

 

좀 더 구체적으로 설명하면 문제의 핵심은 현재 stock으로 버틸 수 있는 날짜까지의 공급량을 우선순위 큐(최대 힙)에 넣고, 가장 큰 공급량을 먼저 사용하는 것입니다. stock을 업데이트한다고 해서 이전 공급량들이 쓸모없어지는 것이 아니라, 아직 사용되지 않았다면 언제든지 선택할 수 있어야 합니다.

따라서 이전 반복에서 추가한 공급량을 계속 유지해야 하므로, max_heap을 초기화하면 안 됩니다.

 

질문 2. max_heap에 있는 원소들과 새롭게 추가된 원소들 중 전자의 경우에서 max 값이 나올 수 있기 때문인가요?

네, 맞습니다!
이전 반복에서 max_heap에 추가된 공급량들 중에서 최댓값이 나올 수 있기 때문에, 새롭게 추가된 공급량들과 비교하여 여전히 가장 큰 값을 가져올 수 있어야 합니다.

get_minimum_count_of_overseas_supply(4, [4, 10, 15, 20], [20, 5, 10, 5], 40)

이 경우를 분석해보면:

  1. 현재 stock = 4

    • 공급 가능 날짜: 4일20 추가

    • max_heap = [20]

    • 가장 큰 값 20을 사용 → stock = 24

  2. 현재 stock = 24

    • 공급 가능 날짜: 10일, 15일, 20일[5, 10, 5] 추가

    • max_heap = [10, 5, 5]

    • 가장 큰 값 10을 사용 → stock = 34

  3. 현재 stock = 34

    • 공급 가능 날짜 없음

    • max_heap = [5, 5]

    • 가장 큰 값 5을 사용 → stock = 39

  4. 현재 stock = 39

    • 공급 가능 날짜 없음

    • max_heap = [5]

    • 가장 큰 값 5을 사용 → stock = 44목표 달성(k=40)

       

     

총 4번의 공급을 받았기 때문에, 정답은 4가 됩니다. 만약 max_heap을 초기화했다면, 이전 공급량들이 사라져서 선택할 수 없게 되고, 잘못된 결과가 나올 수 있습니다.

 

질문 3. while 문에서 벗어나지 못하는 문제

코드에서 무한 루프가 발생하는 이유는 max_heap이 비어 있는데 heappop을 시도했기 때문입니다.
즉, stock을 증가시키려고 하는데 추가할 공급량이 없어서 더 이상 진행할 수 없게 됩니다.

해결 방법

  • max_heap이 비어있을 경우, 더 이상 공급을 받을 수 없으므로 반복을 중단하는 조건을 추가하면 해결됩니다.

     

if not max_heap: 
  return -1 # 예외 처리 (공급을 받을 수 없는 경우)

이렇게 하면 더 이상 공급을 받을 수 없는 경우 즉시 종료할 수 있습니다.

코딩테스트 처음인데 이런 공부방법이어도 괜찮을까요

0

53

2

3-3 정렬-2 선택정렬 로직

0

36

2

링크드 리스트 끝에서 k번째 값 출력하기

0

40

2

LinkedList 과제 Fast, slow 포인터

0

48

2

투포인터 시간복잡도

0

49

2

수강평 작성 후 자료

0

49

2

수업교재 링크 오류

2

105

2

프로그래머스에서 제출 후 채점시 틀림ㅠ

0

124

2

1-10 알고리즘 더 풀어보기(2) 질문 있습니다

0

68

2

문제 풀이 방식 관련 질문입니다!

0

80

2

1-5 알고리즘과 친해지기 (2) - 최빈값찾기 질문 있습니다

0

84

2

수업자료 pdf 받고싶습니다

0

102

2

강의 자료 오류 수정

0

69

1

2-10 더하거나 빼거나 관련 질문입니다

0

60

2

3-8 해쉬 -2

0

47

2

Linked List Element Delete Explanation Problem

0

63

2

강의3-4 스택 탑 문제

0

73

2

코드스니펫 입출력 케이스에 오류가 있는것 같아요

0

97

3

링크드 리스트 원소 찾기 구현 방식 질문드립니다.

0

73

2

1874 - 스택 문항

0

79

2

DP Java 예제 자료형 오버플로우 문제

0

96

2

4-9 4주차 숙제중 농심라면 문제

0

105

2

DFS 에서 스택을 사용하는 이유

1

181

3

들여쓰기가 햇갈리네요

0

118

2