코딩테스트

[프로그래머스] 햄버거 만들기 - Lv.1

pyflu 2023. 8. 18. 02:30

[프로그래머스] 햄버거 만들기 Lv.1 - [파이썬/python]

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

문제 설명

 

 

햄버거를 만든 수만큼 반환(return) 하면 되는 문제입니다.

 

 

조건이 (빵 - 야채 - 고기 - 빵) 순서대로 재료를 받아야만 햄버거를 만들 수가 있습니다.

문제에서는 숫자를 재료로 표현 (1 : 빵 / 2 : 야채 / 3 : 고기 / 1 : 빵)

고로 순서가 1231이 되면 햄버거를 하나 만들 수 있게 됩니다.

 

 

근데 문제에서는 한 가지 조건을 더 줍니다.

햄버거를 만든 후 남은 재료들의 순서가 1231가 될 경우 햄버거를 만들 수 있답니다.

 

 

211231231으로 순서대로 재료를 주면 1231이 한 번 완성되어 햄버거를 한 번만 만들 수 있을 줄 알았는데
남은 재료 21231에 1231이 순서대로 있어서 햄버거를 하나 더 만들 수 있답니다.
그래서 결국 만든 햄버거는 2개가 되어 2를 반환(return) 할 수 있답니다.

 

 

더보기

 

배열을 원소를 하나씩 받아와서 마지막 4개의 원소가 1231인지 확인만 하면 끝인 겁니다.

확인이 되면 마지막 4개의 원소 삭제 후, 햄버거 만든 개수 1 추가

 

 

 

 

 




정답 주의!!!




 

 

 

 


# 프로그래머스 | 햄버거 만들기
def solution(ingredient):
   
    result = 0             # 만든 햄버거 개수
    current_stack = []     # 현재 쌓인 재료를 추적하는 스택

    for i in ingredient:         # 재료 배열을 순회하면서
        current_stack.append(i)  # 현재 재료를 스택에 추가
       
        # 스택의 끝 4개 재료가 [1, 2, 3, 1]인 경우
        if current_stack[-4:] == [1, 2, 3, 1]:
            del current_stack[-4:]  # 스택에서 빵, 야채, 고기, 빵을 제거
            result += 1  # 햄버거 개수 1 증가
   
    # 최종적으로 만들어진 햄버거 개수 반환
    return result

728x90