얼음녹차의 블로그
article thumbnail

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/133502

 

프로그래머스

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

programmers.co.kr

 

처음 작성한 코드

  • 스택 리스트를 작성하여 푸는 풀이이다.
  • 스택 리스트에 재료를 하나씩 넣어준다.
    • 만약 끝단에서 부터 4개의 숫자가 1231의 패턴을 나타내면 햄버거 숫자를 나타내는 변수에 1을 더하고 4개의 재료들을 del 함수를 이용해 삭제한다.
def solution(ingredient):
    ing_stk = []
    n_hambuger = 0

    for i in ingredient:
        ing_stk.append(i)
        if ing_stk[-4:] == [1, 2, 3, 1]:
            n_hambuger += 1
            del ing_stk[-4:]
    return n_hambuger

# 입출력 예시
print(solution([2, 1, 1, 2, 3, 1, 2, 3, 1]))
print(solution([1, 3, 2, 1, 2, 1, 3, 1, 2]))

사실 입력을 조건으로 걸러서 스택 메모리에 부담을 주지 않으려 했는데, 모두를 받는 것이 맞는 선택이었다.

 

다른 코드

  • del 함수 대신 이왕 스택의 pop 함수를 이용하는 방법이 있다.
del ing_stk[-4:]
##
for _ in range(4):
    ing_stk.pop()
profile

얼음녹차의 블로그

@PERIR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!