프로그래머스: 햄버거 만들기(Python3)

SIMPLY_DAILY·2025년 5월 27일

1. 문제

재료의 정보를 나타내는 정수 배열 ingredient가 주어졌을 때, 가게에서 포장할 수 있는 햄버거의 개수를 return 하도록 solution 함수 완성하기

해당 가게는 [빵 – 야채 – 고기 - 빵] 순서대로 쌓이면 햄버거를 포장함

2. 조건

  • 1 ≤ ingredient의 길이 ≤ 1,000,000
  • ingredient의 원소는 1, 2, 3 중 하나의 값이며, 순서대로 빵, 야채, 고기를 의미함

3. 출력 예시

4. 코드 구현

  1. 새 리스트(process)에 ingredient 내 값을 차례대로 추가한다.
  2. 뒤에서부터 4번째까지의 값이 조건에 만족할 경우, 해당 값들을 process에서 제거하고 결과값(완성된 햄버거의 개수)에 1을 더한다.
  3. 결과값을 반환한다.

아래는 내가 초반에 작성했던 코드이다.

결과값은 동일했으나 런타임 에러가 발생하여 통과하지 못했는데, 이 코드가 가진 문제점을 정리해보면 다음과 같다.

문제점

1. del ingredient[i:i+4] 후 인덱스 꼬임

리스트 길이가 줄어들면 i가 더 이상 유효하지 않게 될 수도 있다.

2. 리스트 수정 중 반복 → 예측 불가능한 흐름

리스트를 탐색하면서 동시에 수정하면 반복 구조가 불안정해지고 꼬이기 쉽다.
(가장 흔한 런타임 에러 원인 중 하나)

3. 슬라이스 삭제가 연속적으로 일어날 때 반복 중 리스트 길이 급변

ingredient = [1,2,3,1,1,2,3,1] 같은 경우라면, 하나를 삭제하고 나면 곧바로 다시 조건에 맞는 조합이 생긴다.
이때, 삭제 후 다시 처음부터 순회하려고 해도 리스트가 너무 짧거나, 삭제 후 인덱스 i가 이전 위치로 점프하는 등 예상치 못한 동작이 발생할 수 있다.

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

0개의 댓글